No announcement yet.

Moving /dev/ttyUSB# targets solved - pure success

  • Filter
  • Time
  • Show
Clear All
new posts

    Moving /dev/ttyUSB# targets solved - pure success

    Each time I booted my Linux Homeseer box, the /dev/ttyUSB# mount points would be different for my USB devices. Doh! There is a big difference between my Vista alarm panel and my Prologic pool panel.

    This would mean that I would then need to disable each plugin and then hunt and peck looking for the right mount point using my Vista plugin and then asking for the time on my app.

    So this AM I decided to solve using a udev cfg.

    from a ssh shell (or local shell) cd /etc/udev/rules.d
    There have a look at the rules that already exist. You likely wish to make your rules the highest number.

    I created : 92-usb-serial.rules

    You need to find the values for your rules from udevadm info -a -n /dev/ttyUSB0 (or where ever your device is currently mounted). You will likely find the values you need in the 4th block of info in the device chain.

    And you need to decide on a name. DO use ttyUBS<something> or the Homeseer dropdown will not show it since it looks for ttyS* and ttyUSB*.

    my config:
    homeseer@hometrollerSEL:/etc/udev/rules.d$ cat 92-usb-serial.rules
    SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="ttyUSBAqua"
    SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", ATTRS{serial}=="DJ009FBY", SYMLINK+="ttyUSBVista"

    Note that for the Aqua, my Serial to USB adapter had no serial value, so I could not match on it. Means that if I had two of them I would not be able to differentiate.

    Moving along, unplugging then and plugging back in resulted in a couple symlinks that Homeseer can now use:

    homeseer@hometrollerSEL:/etc/udev/rules.d$ ls -l /dev/ttyUSB*|grep ^l
    lrwxrwxrwx 1 root root 7 Sep 26 07:21 /dev/ttyUSBAqua -> ttyUSB0
    lrwxrwxrwx 1 root root 7 Sep 26 07:26 /dev/ttyUSBVista -> ttyUSB2

    A final note, do not try to specify the actual ttyUSB# to use. That is the domain of the kernel, not udev. udev can only make a symlink, but that is all you need.


    Current Date/Time: 9/26/2016 7:28:33 AM
    HomeSeer Version: HS3 Pro Edition
    Linux version: Linux hometrollerSEL 3.16.0-031600-generic #201408031935 SMP Sun Aug 3 23:56:17 UTC 2014 i686 i686 i686 GNU/Linux System Uptime: 1 Day 13 Hours 38 Minutes 26 Seconds
    Number of Devices: 216
    Number of Events: 55
    Available Threads: 199

    Enabled Plug-Ins AquaConnect EasyTrigger Ecobee HSTouch Server Pushover 3P Vista Alarm weatherXML Z-Wave
    Attached Files
    Last edited by DanielPuckett; September 26, 2016, 08:38 AM.

    Thanks for posting this. I was struggling with the same problem myself.



      Note in the above it is the serial to USB adapter that didn't have a unique serial number. This is not a limitation of the Aqua. If I cared, I could replace with another brand. As it was I could ensure differentiation by using product ID.


        how can you do that with a zwave that change from ttyUSB0 to ttyUSB1 ? Homeeer do not seems to see the new port a created from symlink


          It does - as long as the symlink name starts with ttyUSB, ttyACM or ttyS.


            yes the error was not there.

            I have 2 usb port on the same stick. and the system change them at every booth between USB0 1 or 2

            the only way i found to differentiate them was with this rule :

            SUBSYSTEM=="tty", ATTRS{serial}=="61201652", ATTRS{interface}=="HubZ Z-Wave Com Port", SYMLINK+="ttyACM1", GROUP="dialout", MODE="0666"

            but selecting the interface is not working.

            ls -l /dev/ttyACM1
            ls: cannot access '/dev/ttyACM1': No such file or directory

            when i remove ''ATTRS{interface}=="HubZ Z-Wave Com Port" the simlink is done to the wrong interface


              SUBSYSTEM=="tty", ATTRS{interface}=="HubZ Z-Wave Com Port", SYMLINK+="ttyACM0"
              SUBSYSTEM=="tty", ATTRS{interface}=="HubZ ZigBee Com Port", SYMLINK+="zigbee"

              did the trick !!


                Looks like you have a Nortek HUSBZB-1, as do I. I found this works as well, with plugin interface model "HomeSeer SmartStick +":
                SUBSYSTEM=="tty", ATTRS{interface}=="HubZ Z-Wave Com Port", SYMLINK+="ttyUSBZwave"


                  Changed it to
                  ttyUSBZwave , don't know if ACM0 would be used by something else one day