Forum: PC-Programmierung FTDI245 und linux


von Martin de Wendt (Gast)


Lesenswert?

Hallo,

ich versuche von FTDI den USB Chip 245 unter linux zm Laufen zu
bekommen. Dafür habe ich mir von der ftdi Seite das Linuxpaket
libftd2xx??.tar.gz heruntergeladen. Beim Beispiel simple gibt er aber
immer simple: relocation error: /usr/local/lib/libftd2xx.so: undefined
symbol: usb_init aus. Hat schon jemand Erfahrungen damit gesammelt und
kann mir etwas weiterhelfen?



Martin

von Jens D. (jens) Benutzerseite


Lesenswert?

hmmh
schwere frage
wenn ich zugrieff haette keonnte ich dir evtl etwas helfen..

was sagt denn "tail -f /var/log/syslog" ?? oder messages wenn du den
chip anschliesst??

Gruss Jens

von Wiesi (Gast)


Lesenswert?

Wenn ich mich recht erinnere brauchst du die SOftware von der
Herstellerseite nicht. Seit einiger Zeit (frag nicht seit wann)
ist der Treiber schon fix beim Kernelsource dabei.

Wenn er nicht einkompiliert ist oder das Modul fertig ist,
musst es selbst kompilieren. Aus irgendeinem Grund ist der
Treiber nämlich "experimental" gekennzeichnet.

   Wiesi

von Jens D. (jens) Benutzerseite


Lesenswert?

evtl ist der kernel aber auch nur zu alt =) und man muss einen neuen
backen ;)

von Wiskas(TM)-Jäger (Gast)


Lesenswert?

Meine Güte, was bin ich froh das ich mich bei dem extrem guten Windows
XP nicht mit so einem Blödsinn wie Kernelkompilierung herumschlagen
muß.

von Jens D. (jens) Benutzerseite


Lesenswert?

Blödsinn??

Blödsinn ist dein post, der hier nichts zu suchen hat
schmier dir diese kommmentare in den papierkorb ehh sry der kennt ja
nur dateien und sonnst nichts..

Ach ja, Blödsinn ist es, in windows, dass alles an treibern etc immer
mit geladen werden muss

Blödsinn ist es, wenn man auf eine neue version updaten will gleich
format c machen muss, da sonnst nichts mehr laeft

also lass den scheiss und spiel weiter mit windows rum

von Wiskas(TM)-Jäger (Gast)


Lesenswert?

Mach ich, mein Lieber! Und du kompilier mal fleißig Kernels...

von Martin de Wendt (Gast)


Lesenswert?

Hallo,

der FTDI Support hat mir zuerst die Treiberversion 4.3 geschickt. Damit
hatte ich dann weiter einen usb_init Fehler. Nach weiterem Nachfragen
bekam ich dann die Version 4.1. Diese produzier zwar keinen usb_init
Fehler mehr sondern FT_ListDevices(18).
Jemand schonmal diesen Fehler gehabt. Unter Windows lief alles
innerhalb von einem Tag :-)
Ist es richtig das  bei Linux unter /proc/bus/usb/devices das device
mit driver=serial erscheint?


Martin

von hebel23 (Gast)


Lesenswert?

Hi Martin,

also bei mir lief der FT245 unter Linux (Suse 9.2) auch innerhalb von
einem Tag ;o).
Im Prinzip sind die einfachen Seriell<->USB Treiber ab dem Kernel 2.4.2
mit drin (Module ftdi_sio und fusbserial). Ich habe mich aber auch für
den Weg entschieden, die Treiber von der FTDI-Page
(ftd2xxpackage_v1.tar.gz) zu nehmen. Dazu muss man allerdings zunächst
die Kerneltreibermodule mit

rmmod ftdi_sio und
rmmod usbserial deaktivieren

Ich habe dann anschließend alles wie in der Readme.dat beschrieben
installiert und  und es klappte auf Anhieb. Was sagt den "usbview"
und die Status-LED am USB-Chip wenn das Teil eingestöpselt ist?

Andreas

von Martin de Wendt (Gast)


Lesenswert?

Hallo Andreas,

so soweit habe ich jetzt auch alles hinbekommen. Nur etwas lästig ist
dieses ständige rmmod nach einem Abstöpseln des FT245.
Aber ich habe mit dem Support von FTDI gesprochen: die arbeiten an
einer Version die das ganze selbstständig macht.

Martin

von Jens D. (jens) Benutzerseite


Lesenswert?

such evtl mal nach hotplug, damit kann man dies automatisieren..
kann zumidnest nutzen, um USB (Massen)Speicher automatisch zu mounten

Gruss Jens

von hebel23 (Gast)


Lesenswert?

...gemounted wird der USB-Chip schon automatisch, da man ja auch den
entsprechenden Eintrag in der fstab macht. Nur das die Kernelmodule
sich immer "vordrängeln" ist halt lästig. Sicher kann man das
"rmmod" auch irgendwie automatisieren - hatte aber noch keine Zeit,
um mich damit zu beschäftigen.

@Jens: vielleicht meintest Du aber auch genau das ;o)

Andreas

von Jens D. (jens) Benutzerseite


Lesenswert?

echt in der fstab kann man automatisch USB devices mounten hmmh

nein ich weiss nicht, wie hotplug funktioniert :( leider

ich koennte mir vorstellen, dass du im hintergrund ein kleines script
laufen laesst, welches nach dem USB Device sucht und wenn nicht
gefunden aber modul geladen das modul entläd
sollte machbar sein

Gruss Jens

von ope (Gast)


Lesenswert?

> Nur das die Kernelmodule sich immer "vordrängeln" ist halt lästig.

früher (lange kein active linux kernel && system mehr gemacht), konnte
man in der /etc/config.mod Bedingungen angeben, auch Reihenfolge etc,
ein keyword war preload (sicher nutzlos hier), aber es gab weitere. Mit
Kernel 2.6 sind die module-init-tools und nicht mehr die modutils für
das Laden von Modulen zuständig. Aber in der Doku sollte etwas dazu
stehen (zumindest stand's noch vor 2.6.x).

Viele Grüße
Olaf

von Martin (Gast)


Lesenswert?

Hallo,

einie Mails weiter mit dem Support von FTDI: der neue Treiber von denen
(interne Version 4.4) soll angeblich das automatische rmmod
unterstützen. Funktioniert bei mir aber nicht. Das Problem scheint wohl
zu sein das ich nicht als root an meinem System arbeiten will.
Hat jemand eine gute Quelle was alles in welcher Reihenfole passiert
wenn man ein USB Gerät einsteckt?


Martin

von Jens D. (jens) Benutzerseite


Lesenswert?

schau dir mal syslog an

und zum thema root
fakeroot ;)

Gruss

von Martin (Gast)


Lesenswert?

Hallo,

ich benutze sudo. Meine Frage zielte eher in dei Richtung wo es Infos
gibt in welcher Reihenfolge was geladen wird. Im syslog findet sich da
nicht so viel drüber.


Martin

von Rudi (Gast)


Lesenswert?

Hallo,

hat einer schon den FTDI als normaler User zum laufen bekommen? Als
root läuft alles einwandfrei, aber ich will auch nicht immer mit sudo
das Programm aufrufen müssen.


Rudi

von Uwe Bonnes (Gast)


Lesenswert?

Ich habe in /etc/udev/rules/50-udev.rules
SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="403/6010/*",\
RUN+="/bin/chmod go+rw $env{DEVICE}"
Das setzt die Zugriffsrechte fuer das Device. Mit libusb und
usb_detach_kernel_driver_np()kann man dann das Interface from
Kerneltreiber abkoppeln

von Ssss S. (sssssss)


Lesenswert?

>Mit libusb und usb_detach_kernel_driver_np()
Wie machst du das ?

wenn das init vom libusb schiefgeht (: -5 unable to claim usb device.
Make sure ftdi_sio is unloaded!)
dann ist ja das usbdevice geschlossen (libusb.c, vorm return -.5 steht
nen usb_close())

Deshalb (?) scheitert bei mir auch folgender Code:
1
int f = ftdi_usb_open(&ftdi, 0x0403, 0x6001); 
2
3
  //ftdi_sio loaded, try to unload!
4
  if (f == -5){
5
    //unload/unbind module
6
    f = usb_detach_kernel_driver_np(ftdi.usb_dev, ftdi.interface);
7
    printf("usb unload: %d [%s]\n",f,usb_strerror());
8
9
    //retry open
10
    f = ftdi_usb_open(&ftdi, 0x0403, 0x6001);  
11
  }

Wie machst du das ?

Anonsten ist die libusb echt klasse. Bekomme locker 840KByte/s
rübergeschoben (evtl bekommt man mit größerem buffer noch die 1000 hin,
840 reichen mir aber :) ).
Und das mit nur 40 Zeilen C-Code ohne großartig Ahnung von USB zu haben
:)


Gruss, Simon

von Ssss S. (sssssss)


Lesenswert?

ups, fehlermeldung vom unload vergessen:
usb unload: -22 [could not detach kernel driver from interface 0:
Invalid argument]

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.