Portál AbcLinuxu, 25. dubna 2024 09:47


Dotaz: Identifikace různých usb-serial převodníků stejného typu (CH340)

xkucf03 avatar 25.10.2014 14:31 xkucf03 | skóre: 49 | blog: xkucf03
Identifikace různých usb-serial převodníků stejného typu (CH340)
Přečteno: 708×
Odpovědět | Admin
Přílohy:
Potřeboval bych umět rozlišit mezi různými USB-sériovými převodníky stejného typu (idVendor:idProduct). Jde o to, abych třeba příkazy pro 3D tiskárnu neposílal Baofengu nebo do modemu. Nechci/nemůžu řešit pořadí, v jakém jsem převodníky zapojil a trefovat se do správného /dev/ttyUSBn.

Konkrétně tu mám řadu převodníků:
Bus 007 Device 010: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1a86 QinHeng Electronics
  idProduct          0x7523 HL-340 USB-Serial adapter
  bcdDevice            2.54
  iManufacturer           0 
  iProduct                2 USB2.0-Serial
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               96mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)
A potřeboval bych mezi nimi rozlišovat (a nakonec si vytvářet vlastní symbolické odkazy typu /dev/moje-tiskarna-1).

Vím, že u takového FTDI se dá měnit idVendor/idProduct. To bych ani nepotřeboval, klidně bych nechal ty původní, stačilo by mi nastavit sériové číslo, podle kterého bych poznal, který převodník je který – teď mají všechny nastavenou nulu. V katalogových listech jsem nenašel jak na to.

Další možnost je identifikovat zařízení dotazem – po sériové lince pošlu dotaz a zařízení mi odpoví, co je zač. Ale to je jednak takové neelegantní a jednak se nevyhnu posílání dotazů cizím zařízením a ta by se mohla dostat do nějakého divného stavu.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.10.2014 14:44 Ondrej Santiago Zajicek
Rozbalit Rozbalit vše Re: Identifikace různých usb-serial převodníků stejného typu (CH340)
Odpovědět | | Sbalit | Link | Blokovat | Admin
AFAIK jedine vicemene spolehlive a zaroven univerzalni reseni je identifikace podle pouziteho USB slotu / cesty po sbernici. To bude nezavisle na poradi zapojovani / enumerace, ale zas samozrejme musiz vzdy pouzit stejny port.

Ne-univerzalni reseni je pouzit iSerial, ale to funguje bud se zarizenima s korektne nastavenym nebo nastavitelnym iSerial, coz asi nebude univerzalni vlastnost.

To ale asi vsechno vis, takze tenhle komentar ti nejspis moc nepomohl.
27.10.2014 00:16 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
Rozbalit Rozbalit vše Re: Identifikace různých usb-serial převodníků stejného typu (CH340)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Google je skupy na odpovede, takze je dost moze, ze zmenu serioveho cisla neimplementovali. Bobuzial vela vyrobcov nepredpoklada, ze clovek moze mat aj viac ako jedno rovnake zariadenie pripojene k masine ...

... ak je pravda to s tym seriovym cislom, tak potom uz ostava len:
$ cat /etc/udev/rules.d/50-ttyUSB.rules 
KERNEL=="ttyUSB*", DRIVERS=="ftdi_sio", KERNELS=="7-2:1.0", SYMLINK+="Orange", OWNER="smsd", GROUP="tty",  MODE="600"
KERNEL=="ttyUSB*", DRIVERS=="pl2303",   KERNELS=="7-1:1.0", SYMLINK+="SmartUPS", OWNER="root", GROUP="root", MODE="600"

Dlho som zapasil s tym ako identifikovat zariadenia na USB, az som rezignoval a vsetko mam pomenovane podla cesty na USB zbernici. Ine 100% funkcne riesenie som nenasiel.
27.10.2014 14:24 R
Rozbalit Rozbalit vše Re: Identifikace různých usb-serial převodníků stejného typu (CH340)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ked si to zapajas sam, tak mozes pouzit identifikaciu podla USB portu. Ale potom na to musis pamatat pri kazdom pripajani. Inak ti ostava uz len kupit napriklad jeden prevodnik s PL2303 a dalsi s FTDI.

Tento problem som riesil na sieti par stoviek PC - bolo potrebne odlisit citacku ciaroveho kodu od tlaciarne a ako bonus na niektorych PC je USB 3G modem. Modem sa vyriesil cez usb-modeswitch. Na odlisenie citacky a tlaciarne som musel vytvorit a odladit programy - volaju sa cez udev a ten vyvtori nasledne symlink.
xkucf03 avatar 27.10.2014 19:39 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Identifikace různých usb-serial převodníků stejného typu (CH340)

A jak ten program funguje? Pošle něco do zařízení a podle odpovědi zjistí, co je zač?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.