Převodník USB - RS422/485 SB485 je v Linuxu podporován driverem "ftdi_sio" (nyní aktuální verze 1.4.3), díky němuž je k zařízení (typicky "/dev/ttyUSBx") možno přistupovat jako k normálnímu sériovému portu. Všechny větší distribuce používají modulární jádro (kernel), do kterého je možno za běhu jednotlivé moduly (např. drivery, podporu protokolů, kryptování, znakových sad, souborových systémů atd.) přidávat a odebírat. Další popis bude pro takováto modulární jádra; monolitická jádra s pevně zakompilovanými moduly se užívají hlavně u zapouzdřených a specializovaných systémů a pak následující popis nemusí platit a může být nutno zvolit jiné řešení.
pokud je převodník dodán s USB VendorID(VID)=0x0403 a ProductID(PID)=0x6003, pak by měl být novějšími verzemi Linuxu rozpoznán a jeho driver (modul) systémem sám zaveden. Pokud ne, je možné jej zavést (po připojení SB485) příkazem:
modprobe ftdi_sio
Pokud OS nepodporuje dynamickou správu zařízení "udev", pak je nutno speciální soubor zařízení vytvořit ručně předem příkazem:
mknod /dev/ttyUSB0 c 188 0(hlavní číslo souboru zařízení je 188 a vedlejší je 0 pro ttyUSB0, 1 pro ttyUSB1 atd.
V systémech s jádry 2.6.x a udev podporou se v adresáři "/dev" nebo v jeho podadresářích objeví nové zařízení "ttyUSBx", kde x je číslo udev systémem přidělené, počínaje od 0. Pokud v systému máme jen jedno USB serial zařízení, je situace jednoduchá, pod "/dev" dynamicky vytvořené zařízení bude vždy ttyUSB0 a na ně se mohou používající programy obracet. Pokud v systému je více SB485 nebo další zařízení s "ftdi_sio" driverem nebo obecně další USB serial zařízen, pak může nastat problém s rozlišením zařízení, protože bude existovat několik zařízení ttyUSBx. Jednou z elegantních možností je použití vlastních pravidel pro udev daemona, pomocí kterých je kromě ttyUSBx možno vytvořit i symbolické linky pevných jmen, které ukazují na příslušné ttyUSBx. Blíže viz jako v následující bod:
pokud je převodník dodán s USB VID a PID fy Papouch (nevím, jaká jsou, pro pokusy jsem si do FTDI FT232BM eeprom zapsal VID=0x8765 a PID=0x4321, takže je třeba tyto hodnoty nahradit skutečnými), ftdi_sio modul je zatím nezná, systém zařízení nerozpozná a neví jaký ovladač použít. Ale ftdi_sio modul lze zavést s hodnotami VID a PID jako parametrem, čehož lze využít takto:
alias sb485 ftdi_sio options sb485 vendor=0x8765 product=0x4321a ftdi_sio modul zavedeme ručně (nebo ve startovacích scriptech Linuxu ap.)
# Tohle udela v /dev/ zarizeni "ttyUSBx" a na nej ukazujici symlinky "sb485" a "sb485-{SERIAL_NO}" : ACTION="add" SUBSYSTEM="tty" BUS=="usb" SYSFS{idVendor}=="8765", SYSFS{idProduct}=="4321", SYMLINK+="sb485 sb485-%s{serial}" # Zavedeni driveru "ftdi_sio" s pro driver neznamymi VID a PID : ACTION="add" BUS=="usb" SYSFS{idVendor}=="8765", SYSFS{idProduct}=="4321", RUN+="/sbin/modprobe ftdi_sio vendor=0x8765 product=0x4321"potom nám po připojení SB485 vznikne klasicky (viz bod 2 výše) pod "/dev" zařízení ttyUSBx kde číslo x závisí na USB serial zařízeních v systému. Ale zároveň ve stejném adresáři vzniknou na toto ttyUSBx odkazující symlinky "sb485" a "sb485-{serial}" (kde {serial} je sériové číslo USB zařízení - nesmí obsahovat znak "/"). Pro program používající SB485 se situace zjednoduší - pokud je v systému jen jedno SB485, bude otevírat "/dev/sb485"; pokud je jich více, může s výhodou otevírat "/dev/sb485-{serial}", které bude pro jedno konkrétní SB485 vždy stejné bez ohledu na jaké ttyUSBx symlink ukazuje. Pro mé zařízení příkaz (abych to měl pěkně na konci) :
ls --format=long --sort=time --reverse /devvypíše:
crw-rw---- 1 root uucp 188, 0 zář 1 04:00 ttyUSB0 lrwxrwxrwx 1 root root 7 zář 1 04:00 sb485 -> ttyUSB0 lrwxrwxrwx 1 root root 7 zář 1 04:00 sb485-PPOZ8LPB -> ttyUSB0kde "PPOZ8LPB" je sériové číslo zařízení. V programu se pak budu obracet na zařízení "sb585" (pokud mám jen jedno), nebo na "sb485-PPOZ8LPB" (pokud jich mám více).