[MEGOLDVA] USB-serial adapter

Fórumok

Üdv!

Vásároltam egy iylen USB-serial adapter kábelt:

Bus 003 Device 002: ID 1a86:7523 Unknown HL-340 USB-Serial adapter

A kernelben bennevan a ch341 driver ami teljesen kompatibilis ezzel az adapterrel állítólag. A dmesgben látom is, hogy betöltődik a driver mikor rádugom a gépre az adaptert, de nem tudom, hogy hol tudnám elérni a kábel serial végén lévő eszközt. AZ eszköz ami rajta van egyébként egy általam épített hőmérő. Tuti hogy jó, mivel direktben soros porton üzemel ahogy kell. A nagy bajom igazából annyi, hogy a /dev alatt pár új eszköz jön csak létre, és azokon keresztül sem tudom elérni a hőmérőmet.

Ezek jönnek létre:

usbdev3.7_ep00
usbdev3.7_ep02
usbdev3.7_ep81
usbdev3.7_ep82

+ a /dev/bus/003-ban van egy 001 character device + egy 007 character device, de egyiken keresztül sem tudtam elérni a hőmérőt... Mit lenne még érdemes kipróbálni, vagy milyen eszközt hozzak neki létre..?

Köszi, karika200

MEGOLDÁS: 2.6.29.4-es kernellel próbálkoztam, hogy működésre bírjam a kábelt, de abban a kernelben még a driver elég hiányos... Egy 2.6.31-es kernellel simán működik az ügylet :)

Hozzászólások

próbáld meg ezt:
modprobe usbserial vendor=0x1a86 product=0x7523

--
Soli Deo Gloria

Esetleg ha használ valaki ilyen kábelt, vagy valami hasonlót, az beírhatná az eszköz major és minor számát.

köszi

Nov 22 19:21:37 kernel: [ 1926.478786] usbcore: registered new interface driver usbserial
Nov 22 19:21:37 kernel: [ 1926.479396] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Nov 22 19:21:37 kernel: [ 1926.480096] usbcore: registered new interface driver usbserial_generic
Nov 22 19:21:37 kernel: [ 1926.480111] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial Driver core
Nov 22 19:21:37 kernel: [ 1926.496961] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
Nov 22 19:21:37 kernel: [ 1926.497026] pl2303 1-2:1.0: pl2303 converter detected
Nov 22 19:21:37 kernel: [ 1926.497391] usb 1-2: pl2303 converter now attached to ttyUSB0
Nov 22 19:21:37 kernel: [ 1926.497421] usbcore: registered new interface driver pl2303
Nov 22 19:21:37 kernel: [ 1926.497426] /build/buildd/linux-2.6.24/drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

crw-rw---- 1 root dialout 188, 0 2009-11-22 19:21 /dev/ttyUSB0

Bus 001 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

dmesg mit mond?

ez megy nekem, bár tudom ez sokat nem segít:
Bus 005 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Hali!

Elso korben ne a homerovel probalkozz, hanem kosd ossze a konverter rxd es txd labat es minicommal probalj meg beirni karaktereket. (Vissza kell hogy echozza.) Ha ez mukodik, akkor se biztos, hogy az eszkozod menni fog, mert gyanitom, hogy te a modemvezerlo jeleket hasznalod adatatvitelre, azt meg egyaltalan nem biztos, hogy kezeli ez a konverter (sokszor kisporoljak beloluk, vagy nem pont ugy mukodnek, ahogy elvarnad (idozites, stb)).

By(t)e
TBS::Antiemes

Köszi, meg fogom próbálni, csak az a baj, hogy két hét múlva megyek csak haza:$ Én pont a DTR, CTS, RTS és a GND lábakat használom, szóval lehet h igazad lesz :| MEgfogom próbálni vissza echoztatni a cuccokat...

Köszönöm a segítségeta többieknek is... Ha még van bárkinek ötlete csak bátran.. :)

kisbetu: Ahogy nézem ők is ezzel a ch341-el operálnak. Az a driver tuti, hogy 100% kompatibilis.

Nos.. rádugtam a hőmérő helyére az egyik telefonom soros adatkábelét, és az se csinál semmit... gammu azt mondja, hogy phone not connected... Mit lehet ilyenkor hegeszteni ezen még?:\ Se telefon nem működik rajta, se hőmérő.. :|

Ezt probaltad? legyen ez az elso, ha ez sem megy, akkor ize, kellemetlen... hasonlo modon a dtr-dsr es az rts-cts vezetekek visszadrotozasat is kiprobalhatod (ezeket a vezetekeket is lehet rangatni, legalabbis c progi szintje'n ma'r stabilan csinaltam, ugy megy), lasd bovebben: null modem. sot, persze: ha van egy masik geped, amin van biztonsan jol mukodo sorosport, akkor egy nullmodemet is betehetsz, es lehet probalgatni.

köszi, de ez a része megvan, a driver a kernelben van, az eszköz létrejön a /dev alatt, és két gép között null modem kábellel és minicommal tudok is üzengetni. De a telefonom soros adatkábelét nem tudom használni az adapteren át, emrt a gammu azt mondja, h not connected, és a hőmérőm se működik a kábellel :/

hmm, most volt szerencsém kipróbálni a kábelt windowson a hozzá kapott driverrel, és a hőmérővel tökéletesen működik :| Tehát a kábel működik a hőmérővel, csak a linuxos driverrel lesz vmi.. :\ kell vmi más stuff a device drivers->usb->usb-serial adapters->hl-340 -en kívül hozzá vajon a kernelbe? vagy a linux kernelben lévő driver nem az igazi..?:\

Igen, most nezem a kernel forraskodjat, es valoban. Egy `dtr` es `rts` nevu" elem van a ch341 sajat privat strukturajaban, ezt elvileg az usb-n keresztul tudja rangatni. Viszont a .tiocmget es .tiocmset osztalytagok nincsenek implementalva. Tehat lusta volt a fejleszto, es ezt nem tette bele. Lehet reklamalni ;) szerintem kb +40-50 sor hozzairni ezt a funkcionalitast, legalabbis egyik-masik modul hasonlo tagjai alapjan. Mostanaban en is jatszottam ttyusb cuccokkal (modem kontrol nelkul) de ez a ku"tyu" amit random vettem a bo'tban a pl2303-as ne'ven regisztralja maga't, ott meg megcsinaltak a tiocm[gs]et-et, szoval az sajnos nem segit... vakon felprogramozni meg nyilvan nem az igazi :] bar egy probat talan mege'r.

A.

hmm, valóban... a 2.6.29-es kernelben lévő driverben ezek még nem szerepelnek(ezt használom), de a 2.6.32-esben igen...

2.6.32:

static struct usb_serial_driver ch341_device = {
.driver = {
.owner = THIS_MODULE,
.name = "ch341-uart",
},
.id_table = id_table,
.usb_driver = &ch341_driver,
.num_ports = 1,
.open = ch341_open,
.dtr_rts = ch341_dtr_rts,
.carrier_raised = ch341_carrier_raised,
.close = ch341_close,
.ioctl = ch341_ioctl,
.set_termios = ch341_set_termios,
.break_ctl = ch341_break_ctl,
.tiocmget = ch341_tiocmget,
.tiocmset = ch341_tiocmset,
.read_int_callback = ch341_read_int_callback,
.attach = ch341_attach,
};

2.6.29:

static struct usb_serial_driver ch341_device = {
.driver = {
.owner = THIS_MODULE,
.name = "ch341-uart",
},
.id_table = id_table,
.usb_driver = &ch341_driver,
.num_ports = 1,
.open = ch341_open,
.set_termios = ch341_set_termios,
.attach = ch341_attach,
};

Valószínűleg az lesz, hogy ezt az egy filet átmásolom az új kernel forrásból a régibe, és recompile... és akkor gyanítom menni is fog a móka.. :) Vagy hát remélem... 2 hét múlva, ha letudom a vizsgáimat, megyek haza sé beszámolok, hogy sikerült-e vagy sem.. Köszönöm a segítséget mindenkinek :))

Köszönöm mindenkinek a segítséget, a témanyitó hozzászólásban leírtam mi lett a megoldás :)