Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: David1234 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:
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ě:
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í.
[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:
#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!
-
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
modprobe usbserial vendor=0x0c52 product=0xa023[ 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
-
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:
{ 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:
#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:
readelf -S ftdi_sio.ko | grep module_sig
[21] .module_sig PROGBITS 0000000000000000 000143b0
objcopy -R .module_sig ftdi_sio.ko
-
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í :)