Kompilace modulu ftdi_sio

David1234

Kompilace modulu ftdi_sio
« kdy: 03. 03. 2014, 10:12:50 »
Ahoj, snažím se připojit v Ubuntu 13.10 na Serial Interface Adapter, s největší pravděpodobností jde o tento (http://www.sealevel.com/store/serial/asynchronous-serial/usb/2801-usb-to-8-port-rs-232-db9-serial-interface-adapter.html), problém je, že k PC se připojuje pomocí USB kabelu (zároveň napájení).

Systém ho rozpozná takto:
Kód: [Vybrat]
Bus 001 Device 029: ID 0c52:a025 Sealevel Systems, Inc.
Bus 001 Device 028: ID 0c52:a024 Sealevel Systems, Inc.
Bus 001 Device 027: ID 0c52:a023 Sealevel Systems, Inc.
Bus 001 Device 026: ID 0c52:a022 Sealevel Systems, Inc.

Do toho zařízení lze připojit 8xRS232 -> tedy pod jedním ID jsou schované dva seriové porty.

Tímto příkazem se mi povedlo namapovat vždy jenom dva porty současně:
Kód: [Vybrat]
modprobe ftdi_sio vendor=0x0C52 product=0xa022
Vytvořily se vždy jen dva nody /dev/ttyUSB0 a /dev/ttyUSB1, seriová komunikace fungovala.

Rozhodl jsem se pro kompilaci modulu podle návodu zde - http://www.sealevel.com/support/article/AA-00524/0/How-to-configure-USB-serial-adapters-in-Linux.html. Modul jsem upravil, nahrál ale z nějakého důvodu se mi nevytvoří v /dev zařízení.

Kód: [Vybrat]
[16069.542961] usb 1-1.2: new full-speed USB device number 25 using ehci-pci
[16069.635779] usb 1-1.2: New USB device found, idVendor=0451, idProduct=2046
[16069.635786] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[16069.636342] hub 1-1.2:1.0: USB hub found
[16069.636478] hub 1-1.2:1.0: 4 ports detected
[16069.907150] usb 1-1.2.1: new full-speed USB device number 26 using ehci-pci
[16070.007166] usb 1-1.2.1: New USB device found, idVendor=0c52, idProduct=a022
[16070.007174] usb 1-1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16070.007178] usb 1-1.2.1: Product: SeaLINK+8 USB Converter
[16070.007181] usb 1-1.2.1: Manufacturer: Sealevel
[16070.007184] usb 1-1.2.1: SerialNumber: xxxxx
[16070.083320] usb 1-1.2.2: new full-speed USB device number 27 using ehci-pci
[16070.183160] usb 1-1.2.2: New USB device found, idVendor=0c52, idProduct=a023
[16070.183168] usb 1-1.2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16070.183172] usb 1-1.2.2: Product: SeaLINK+8 USB Converter
[16070.183175] usb 1-1.2.2: Manufacturer: Sealevel
[16070.183178] usb 1-1.2.2: SerialNumber: xxxxx
[16070.259432] usb 1-1.2.3: new full-speed USB device number 28 using ehci-pci
[16070.358970] usb 1-1.2.3: New USB device found, idVendor=0c52, idProduct=a024
[16070.358978] usb 1-1.2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16070.358988] usb 1-1.2.3: Product: SeaLINK+8 USB Converter
[16070.358991] usb 1-1.2.3: Manufacturer: Sealevel
[16070.358994] usb 1-1.2.3: SerialNumber: xxxxx
[16070.435524] usb 1-1.2.4: new full-speed USB device number 29 using ehci-pci
[16070.535189] usb 1-1.2.4: New USB device found, idVendor=0c52, idProduct=a025
[16070.535197] usb 1-1.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16070.535201] usb 1-1.2.4: Product: SeaLINK+8 USB Converter
[16070.535205] usb 1-1.2.4: Manufacturer: Sealevel
[16070.535209] usb 1-1.2.4: SerialNumber: xxxxx

Úpravu jsem prováděl v souboru ftdi_sio_ids.h:
Kód: [Vybrat]
#define SEALEVEL_2803R_1_PID 0Xa022 /* SeaLINK+8 (2803-ROHS) Port 1+2 */
#define SEALEVEL_2803R_2_PID 0Xa023 /* SeaLINK+8 (2803-ROHS) Port 3+4 */
#define SEALEVEL_2803R_3_PID 0Xa024 /* SeaLINK+8 (2803-ROHS) Port 5+6 */
#define SEALEVEL_2803R_4_PID 0Xa025 /* SeaLINK+8 (2803-ROHS) Port 7+8 */

Toto zařízení tam již bylo, tak jsem pouze "přerazil" jeho IDčka a zkompiloval modul. Zkusil jsem ještě vytvořit ručně pomocí mknod zařízení v /dev, ale ani to nějak nepomohlo.

Netušíte, kde by mohla být chyba? :) Díky všem za reakce!


David1234

Re:Kompilace modulu ftdi_sio
« Odpověď #1 kdy: 04. 03. 2014, 11:49:21 »
Zkoušel jsem přidat pravidlo do udev. Nepomohlo. Nemohlo by to být tím, že je potřeba překompilovat také usbserial modul?

Když ho takto nahraju, tak se po připojení vytvoří ttyUSB0 a ttyUSB1
Kód: [Vybrat]
modprobe usbserial vendor=0x0c52 product=0xa023
Kód: [Vybrat]
[ 8404.558805] usbserial_generic 1-1.2.1:1.0: generic converter detected
[ 8404.558999] usb 1-1.2.1: generic converter now attached to ttyUSB0
[ 8404.561900] usbserial_generic 1-1.2.1:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes.
[ 8404.561908] usbserial_generic 1-1.2.1:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[ 8404.561913] usbserial_generic 1-1.2.1:1.1: generic converter detected
[ 8404.562127] usb 1-1.2.1: generic converter now attached to ttyUSB1

Jaroslav Kučera

Re:Kompilace modulu ftdi_sio
« Odpověď #2 kdy: 01. 07. 2016, 13:45:42 »
U zakaznika se ted jeden podobny poklad objevil, diky za navedeni na spravnou stopu.

Davide chybu jsi mel v tom, ze je treba jeste upravit ftdi_sio.c. Musi se tam pridat:
Kód: [Vybrat]
       { USB_DEVICE(SEALEVEL_VID, SEALEVEL_A024_PID) },
       { USB_DEVICE(SEALEVEL_VID, SEALEVEL_A025_PID) },
       { USB_DEVICE(SEALEVEL_VID, SEALEVEL_A023_PID) },
       { USB_DEVICE(SEALEVEL_VID, SEALEVEL_A022_PID) },

A v ftdi_sio.h ma byt nasledujici. Ty jsi sice doplnil ty ID, ale ne nazev definice:
Kód: [Vybrat]
#define SEALEVEL_A022_PID      0XA022  /* SeaLINK+8 (2803-ROHS) Port 1+2 */
#define SEALEVEL_A023_PID      0XA023  /* SeaLINK+8 (2803-ROHS) Port 3+4 */
#define SEALEVEL_A024_PID      0XA024  /* SeaLINK+8 (2803-ROHS) Port 5+6 */
#define SEALEVEL_A025_PID      0XA025  /* SeaLINK+8 (2803-ROHS) Port 7+8 */

Pak to jde zkompilovat a nahradit. V mem pripade na RHEL5 jsem jeste musel odstranit podpis z modulu, aby se to nevztekalo:
Kód: [Vybrat]
readelf -S ftdi_sio.ko | grep module_sig
  [21] .module_sig       PROGBITS         0000000000000000  000143b0
objcopy -R .module_sig ftdi_sio.ko


David1234

Re:Kompilace modulu ftdi_sio
« Odpověď #3 kdy: 12. 03. 2017, 21:32:20 »
Jsem moc rád, že se našel někdo kdo odpověděl :D (i když po tak dlouhé době). Bohužel/bohudík jsem změnil zaměstnavatele a připojení přes sériovou linku již využívám minimálně  ;D Každopádně díky moc za nalezení řešení :)