FTDI USB-zu-Seriell-Adapter an der DS211j

Status
Für weitere Antworten geschlossen.

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo,
zum Thema "FTDI-Chip an DiskStations" gibt es ja schon einige Threads.
Jedoch konnte ich leider nichts spezifisch für die DS211j (Marvell 6281 /ARM (armv5tel) Architektur) finden.
Ich habe mit dem ipkg bereits sämtliche Pakete installiert die vorrausgesetzt werden:
Rich (BBCode):
$ ipkg install libusb libftdi kernel-module-usbcore kernel-module-usbserial
die Installationen verliefen auch ok.
Mit lsusb wird der FTDI zwar angezeigt (was aber nicht viel bedeutet),
Rich (BBCode):
$ lsusb
Bus 001 Device 003: ID 0403:6001 [...] FT232 USB-Serial (UART) IC
aber lsmod und dmesg zeigen aber, dass nichts FTDI- oder usbserial-artiges geladen ist.
Auch wird keine Gerätedatei wie /dev/ttyUSB0 oder /dev/ttyS0 o.ä. angelegt.
Auch in /lib/modules tauchen keine Dateien auf, die "ftdi" oder "serial" enthalten.
Habe mich auch im Netz auf die Suche nach ftdi_sio.ko und usbserial.ko gemacht, aber alle gefundenen waren nicht für armv5tel kompiliert (insmod... wrong module format).

Die Kernelsourcen habe ich auch heruntergeladen und versucht den FTDI-Treiber (ftdi_sio.c, der braucht ja die Kernel Sourcen) zu kompilieren (auf der DS211j selber).
Das ging natürlich gründlich schief, massenhaft nicht gefundene Abhängigkeiten...
Ich habe die Hoffnung dass man nicht derart weit ausholen muss um auf der DS211j einen FTDI-Serialport als das übliche /dev/ttyUSB0 zu bekommen.
Hat da schon jemand Erfahrung, wie man das zum laufen bringt?

Vielen Dank
Mario

Meine DS211j (uname -a):
Linux DiskStation 2.6.32.12 #1354 Sat Oct 23 00:49:24 CST 2010 armv5tel GNU/Linu
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.993
Punkte für Reaktionen
262
Punkte
373
Hallo,
hier gibt es das Modul für Kernel 2.6.24, ob das auch bei Deinem 2.6.32 funktioniert, weiß ich nicht.

Gruß Götz
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hi Götz,
danke für den Tipp!
Glaube den Link hatte ich auch schonmal, aber habs eben nochmal probiert:
Rich (BBCode):
$ cd /lib/modules
$ wget http://ipkg.nslu2-linux.org/feeds/optware/syno0844mv6281/cr ...
$ipkg install ....ipk
Installing kernel-module-ftdi-sio (2.6.24-1) to root...
Configuring kernel-module-ftdi-sio
Successfully terminated.
$ cd /opt/lib/modules/2.6.24/kernel/drivers/usb/serial
## dahin werden die ja dateien aus dem ipk hininstalliert
drivers/usb/serial # insmod usbserial.ko
insmod: can't insert 'usbserial.ko': invalid module format
drivers/usb/serial # insmod ftdi_sio.ko
insmod: can't insert 'ftdi_sio.ko': invalid module format

ist das irgendein kernel-versions-problem oder architektur-problem (letzteres sollte ja eigentlich passen dachte ich)?
Viele Grüsse
Mario
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.993
Punkte für Reaktionen
262
Punkte
373
Hallo,
wird wohl Kernelversionsproblem sein, Architektur passt ja.

Gruß Götz
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Mhm ja, den Verdacht hab ich auch.
Leider findet sich nix für Kernel .32 im Netz.
Ich habe gelesen dass seit Kernel .32 der FTDI schon im Kernel drinnen ist (aber evtl nicht aktiviert).
Daher der Plan, Kernel selber kompilieren und im make Menuconfig alles zum Thema FTDI ankreuzen.
Habe mir ja die Kernel-Sourcen heruntergeladen (synogpl-1337b-6281.tbz), und mich soweit es ging an den
"Synology DiskStation Manager 3rd-Party Apps Developer Guide" gehalten, wie ich es entpacken und konfigurerien soll (das Dokument funzt nur für Kernel .24, für Kernel .32 existieren die Configfiles nicht wie beschrieben).
make menuconfig steigt ja schon aus dass es ncurses-devel nicht findet.
Auch ein suchen alles ncurses-mässigem (ipkg find | grep ncurses) und dessen Installation hilft leider nicht, menuconfig heult nach ncurses-devel.
Naja und ftdi-sio sourcen runterladen und versuchen zu kompilieren ist mir auch nicht gelungen, denn sie verlangen ja Pfade zum src/ vom Kernel, der bei mir anscheinend nicht stimmt oder unvollständig ist ...?

Rich (BBCode):
# cd /usr/src/linux-2.6.32.12 ; ls
COPYING        Makefile        cesa      git.tgz  lib      scripts      usr
CREDITS        README          crypto    include  mm       security     virt
Documentation  REPORTING-BUGS  drivers   init     net      sound
Kbuild         arch            firmware  ipc      patches  synoconfigs
MAINTAINERS    block           fs        kernel   samples  tools
# make menuconfig
 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 ***
 *** Install ncurses (ncurses-devel) and try again.
 ***
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2

... Kernel oder Kernelmodule zu selber kompilieren ist schon echt bockig.
Jede Anleitung dazu kann man knicken solange sie nicht exakt auf die Kernelversion, Architektur und Art der Diskstation passt. :-(

Kann mir jemand sagen wie ich den Kernel / ein Kernelmodul für DS211j Marvell 6281 /ARM (armv5tel) kompilieren kann (auf der DS selber, hab keinen 2. Linuxrechner).
Merci!
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Problem (zu 98%) gelöst

Hallo,

es funktioniert!
Ich gebe mal kurz wieder, wie ich es gemacht habe und was die besonderen Stolpersteine waren.
Eigentlich stehts ja nahezu vollständig im bereits erwähnten Guide drinnen, aber man übersieht dort sehr leicht ein paar Details...
Man braucht keine 2. Linux-Maschine, die DS211j kompiliert sich alles (*.ko) selber.
Rich (BBCode):
# Kernel Sourcen runterladen und nach /usr/src/linux verschieben
# ipkg install gcc optware-devel
# cd /usr/src/linux
# cp synoconfigs/88f6281 .config

Den cp-Schritt hatte ich bisher vergessen. Ohne den bekommt man zwar auch .ko-Module, aber die passen nicht exakt und lassen sich daher nicht laden.

Rich (BBCode):
# make clean
# make oldconfig ARCH=arm CROSS_COMPILE=/opt/bin/

Jetzt im File /usr/src/linux/.config die entsprechende Zeile auf
CONFIG_USB_SERIAL=m
ändern. Dann

Rich (BBCode):
# make prepare   ARCH=arm CROSS_COMPILE=/opt/bin/

Hier kriegt man einige Fragen gestellt, diejenigen nach usbserial und FTDI mit Y beantworten. Dann

Rich (BBCode):
# make modules   ARCH=arm CROSS_COMPILE=/opt/bin/ M=scripts
# make modules   ARCH=arm CROSS_COMPILE=/opt/bin/ M=drivers/usb/serial

Jetzt sollten die .ko-Dateien erzeugt worden sein, die man gleich laden kann:

Rich (BBCode):
# insmod /usr/src/linux/drivers/usb/serial/usb/usbserial.ko
# insmod /usr/src/linux/drivers/usb/serial/usb/ftdi_sio.ko
# lsmod

Stecke ich ein FTDI-Gerät ein, so sehe ich in dmesg

Rich (BBCode):
ftdi_sio 1-1.3:1.0: FTDI USB Serial Device converter detected
usb 1-1.3: Detected FT232BM
usb 1-1.3: Number of endpoints 2
usb 1-1.3: Endpoint 1 MaxPacketSize 64
usb 1-1.3: Endpoint 2 MaxPacketSize 64
usb 1-1.3: Setting MaxPacketSize 64
usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUS
Got empty serial number. Generate serial number from product.

Allerdings wird keine /dev/ttyUSB0 Gerätedatei erzeugt. Dieses manuell machen und Baudrate (hier 115200) einstellen.

Rich (BBCode):
# mknod /dev/ttyUSB0 c 188 0
# stty -F /dev/ttyUSB0 ispeed 115200 ospeed 115200
# cat /dev/ttyUSB0
... daten von der seriellen schnittstelle ...

Problem also (nahezu) gelöst.
Die DS211j fährt jetzt nichtmehr herunter wenn ich es ihr befehle.
Vermutlich werden die Module nicht sauber entladen ...?

Weis jemand wie man Module automatisch lädt (USB-einstecken) und entlädt (USB-ausstecken, poweroff)?
Oder wo ist ein Logfile wo ich sehe, wo der shhutdown klemmt?
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
da fehlt wohl für den hotplug daemon der passende agent bzw der usb.agent müsste erweitert werden. Die liegen unter /usr/syno/hotplugd oder /usr/syno/hotplug. Kann grad nicht auf die DS zugreifen, evtl. stimmt der Pfad nicht ganz.
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Danke für die Info!
Das runterfahren klappt mittlerweile auch, ich habe das modul-Laden in den entsprechenden /etc/rc-Abschnitt nach Schritt 3.2 dieser Anleitung eingetragen.
Zum Thema hotplug:
Werde es mal ausprobieren was ich zum hotplugd zusammenkonfigurieren kann.
Allerdings spielt es in meinem Fall eigentlich garkeine Rolle, ob hinter der (jetzt permanent vorhandenen) Gerätedatei /dev/ttyUSB0 wirklich ein Gerät steht oder nicht.
Denn ob hinter einer seriellen Schnittstelle (also dem "Frontend" des USB-FTDIs) ein Gerät eingesteckt ist oder nicht, kann die serielle Schnittstelle alleine ja auch nicht rausfinden (die kennt ja sowas wie hotplug eh nicht).
Ich denke das Thema DS211j+FTDI ist gelöst und ich kann mich weiter giften, warum mysql5 bei mir nicht laufen will ... ;-)
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Allerdings spielt es in meinem Fall eigentlich garkeine Rolle, ob hinter der (jetzt permanent vorhandenen) Gerätedatei /dev/ttyUSB0 wirklich ein Gerät steht oder nicht.
Denn ob hinter einer seriellen Schnittstelle (also dem "Frontend" des USB-FTDIs) ein Gerät eingesteckt ist oder nicht, kann die serielle Schnittstelle alleine ja auch nicht rausfinden (die kennt ja sowas wie hotplug eh nicht).
Ich denke das Thema DS211j+FTDI ist gelöst und ich kann mich weiter giften, warum mysql5 bei mir nicht laufen will ... ;-)
Ja stimmt, die serielle Schnittstelle weiss ja nichts vom hotplug. Auf das mit dem Entladen der Module vor dem Herunterfahren hätte ich auch selber drauf kommen können, war irgendwie fixiert auf Hotplug ;)
 

Brevheart

Benutzer
Mitglied seit
19. Mai 2011
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
@Mario77
Könntest du die beiden Module usbserial.ko, ftdi_sio.ko irgendwo zum download bereitstellen? Oder Sie mir per E-MAIL zukommen lassen?
DANKE!

Brevheart@web.de

Gruß Brevheart
 
Zuletzt bearbeitet:

Brevheart

Benutzer
Mitglied seit
19. Mai 2011
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Hat sich erledigt! :) Habe es selbst hinbekommen! Trotzdem danke für deine Anleitung!

Nachtrag: usbserial.ko läßt sich ohne Probleme laden, aber nicht ftdi_sio.ko :(

>> insmod: can't insert '/lib/modules/ftdi_sio.ko': unknown symbol in module, or unknown parameter


Gruß Brevheart
 
Zuletzt bearbeitet:

Brevheart

Benutzer
Mitglied seit
19. Mai 2011
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Alles zurück, hatte den falschen source! :)

Klappt alles!

Gruß Brevheart
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hier sind die .ko

Hi,
sorry die verspätete Antwort, bzw auch wenns sich schon erledigt hat.
Lieder kann ich den Source hier nicht anhängen, wenn ihn noch wer braucht bitte email an
sup erdu de ät geh ehm icks punkt deh eh
 

sboll

Benutzer
Mitglied seit
21. Sep 2011
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen, ich habe diesen Thread über google gefunden. Leider bin ich zu blöd, den Treiber selbst zu kompilieren. Könnte mir den jemand schicken?
 

sboll

Benutzer
Mitglied seit
21. Sep 2011
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Besten Dank!

Super, das werde ich heute Abend mal ausprobieren!
 

sboll

Benutzer
Mitglied seit
21. Sep 2011
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Schade, funktioniert scheinbar nicht mit 3.2

Hallo nochmal. Leider scheint der Treiber mit der neusten 3.2er Version nicht zu funktionieren.
Im dmesg-Log finde ich folgende Fehlermeldungen:
[ 30.260000] usbcore: registered new interface driver usbserial
[ 30.270000] USB Serial support registered for generic
[ 30.280000] usbcore: registered new interface driver usbserial_generic
[ 30.280000] usbserial: USB Serial Driver core
[ 30.320000] ftdi_sio: Unknown symbol ___copy_to_user
[ 30.330000] ftdi_sio: Unknown symbol __arch_copy_from_user

Da scheint sich was im Kernel geändert zu haben.
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Dann gehts dir wohl genauso wie mir Anfang des Jahres - ich hatte auch einen "nahezu" passenden Treiber gefunden. Aber das reicht nicht, weil er wirklich exakt auf deine Kernelversion passen muss.
Darum musste ich ihn auch selber kompilieren, was mir auch (unter großen Qualen zugegeben) gelungen ist.
Probier es doch auch mal! Ich hab Anfang des Threads recht genau aufgeschrieben wie das geht. Du brauchst auch keinen 2. Linuxrechner dafür die DS kompiliert ihr Zeug selber.
 

sboll

Benutzer
Mitglied seit
21. Sep 2011
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Jetzt klappt's

@Mario77
Vielen Dank nochmal, jetzt habe ich den Treiber selber kompiliert bekommen. Das war für mich die Linux Treiber-Premiere :)

Falls das nochmal jemand machen möchte:
Für die momentan aktuelle 3.2er Version wird entgegen der Anleitung von Seite 1 mittlerweile der 1922er Branch (synogpl-1922-6281.tbz) benötigt.
Ich hatte dann noch ein Problem, dass die library "libncursesw.so.5" nicht gefunden werden konnte. Nach langem googlen habe ich einfach die vorhandene
"libncurses.so.5" umkopiert, und obwohl ich das nicht erwartet habe, es funktioniert. Ob das irgendwelche Einschänkungen mit sich bringt, werde ich wohl bald feststellen.
 

Mario77

Benutzer
Mitglied seit
16. Jan 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Servus!
Gern geschehen! Freut mich dass es bei dir läuft.
Wenn du im Thread zurückschaust siehst du, dass ich auch an der libncurses gehangen bin - ich hab allerdings keine andere lib umbenannt sondern hatte versucht das Configfile, das einem das make menuconfig am schluss ausspuckt, irgendwie anders zu generieren. Ich glaube ich hatte es mit einem Texteditor direkt geändert und einfach bei allem was ftdi/usbserial-haft klingt sinngemäß "=YES" ooder "=MODULE" hingeschrieben.
Irgendwie hatte es dann die ko Files kompiliert, aber Fehler gabs trotzdem, aber irgendwo anders was usbserial nicht tangiert hat.
Es war recht pissig gewesen die ko-Erstellerei, ich hatte es bereits gut verdrängt gehabt ;-)
Das von dir verbogene ncurses wird ziemlich sicher keine Effekte auf das FTDI-Laufzeitverhalten haben:
ncurses wird ja lediglich von make menuconfig benutzt wird um eine "Textmodus-Fensteroberfläche" zu erzeugen in der du deine Kernelconfig zusammenklicken kannst. Das erzeugte FTDI-Modul braucht kein ncurses.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat