Announcement

Collapse
No announcement yet.

Does the ZNET(eu) support multiple z-wave usb controllers

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Does the ZNET(eu) support multiple z-wave usb controllers

    Hello,

    I have insufficient coverage in my cellar with one z-wave controller centrally place in my house.
    The current controller is a Europe ZNET with one usb zwave controller inserted in one of the ZNET usb ports.
    I've done some tests with a ZME-UZB1 as secondary controller inserted in my central computer and all works fine.
    This second controller is inserted behind an usb extender (with UTP cat6 cable) from Aten.
    But for the cabling it would be much easier if this second controller could be inserted on the ZNET in one of the free usb ports.
    Is this supported by the ZNET?



  • #2
    Originally posted by Joris Vandoren View Post
    Hello,

    I have insufficient coverage in my cellar with one z-wave controller centrally place in my house.
    The current controller is a Europe ZNET with one usb zwave controller inserted in one of the ZNET usb ports.
    I've done some tests with a ZME-UZB1 as secondary controller inserted in my central computer and all works fine.
    This second controller is inserted behind an usb extender (with UTP cat6 cable) from Aten.
    But for the cabling it would be much easier if this second controller could be inserted on the ZNET in one of the free usb ports.
    Is this supported by the ZNET?

    Although the ZNET has USB ports doesn't mean that you should add an extra zwave usb stick because inside there is a zwave daughter board installed. (at least the ones I bought directly from HomeSeer Shop both have) So it won't give you extra resources as you would get with a USB thumb drive. Yes the USB zwave stick is required for the Troller vervsion of HomeSeer but a ZNET is already a zwave interface!

    For more ideas on remote placement : https://forums.homeseer.com/forum/ge...-poe-hat/page2 or if you can't build your own : https://www.amazon.com/s?k=wt-af-5v1...nb_sb_ss_i_1_5 and if you also want to add your z-stick here : https://forums.homeseer.com/forum/ho...ave-smartstick



    Eman.
    The Closer.

    Comment


    • #3
      The EU version Z-Net supports only one external radio as delivered. It is possible to modify a system file, /etc/ser2net.conf, to add support for extras. You'll need to get command line access to accomplish this.

      Its not clear though how two relatively co-located radios of the same type would be much better than one.

      Comment


      • #4
        Thanks, for the inputs.

        My hometroller is installed on the groundfloor in the far right corner of the house. The ZNET is installed in the center of the house +- 1 m above the groundfloor.
        This setting gives good coverage in my house, except for the far left corner in the cellar.
        I've tried already to place a z-wave extender from Aeotec, but this didn't solve the communication problems I had with my zwave devices in the cellar.

        I have a USB extender from Aten (UCE260). If I use a UTP cat6 cable of about 30 m, I can connect one of the usb ports on my hometroller with a ZME-UZB1 usb dongle in the cellar and provide as such a better coverage for the z-wave devices in the cellar.

        I just asked this because placing the cable from the ZNET to the cellar is much easier than placing the cable from my hometroller to the cellar.
        For a while I did consider buying a second ZNET but this solution cost four times the price of this extender and the utp cable.

        Joris

        Comment


        • #5
          What bugs me is that HS's own SmartStick+ won't completely work when running under Z-NET code. You can't do restores or initial installs but it will run if you set the SS+ up on the HS3 system. Hopefully that will be fixed soon. I still don't understand why they don't just make Z-NET and the ZEE-S2 a single device and allow one to select if it should boot as a Z-NET or ZEE-S2 through the find.homeseer.com process or by setting a flag in the boot directory.

          Little known fact one could actually run both at the same time and let HS3 connect to the Z-NET code running on the same device. I've see, and done, this done many times in other types of systems and it works great. The two parts just communicate with each other via the internal network 127.0.0.0 so it doesn't matter if they are running in the same or different computers.
          HomeSeer Version: HS3 Standard Edition 3.0.0.531 | Mono JIT compiler version 5.20.1.19 (tarball Thu Apr 11 09:02:17 UTC 2019)
          Linux version: Linux auto 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
          IP Address: 10.0.2.16 | Number of Devices: 417 | Number of Events: 667 | Available Threads: 399 | HSTouch Enabled: True

          Enabled Plug-Ins: AirplaySpeak: 3.0.0.13 | BLBackup: 2.0.61.0 | EasyTrigger: 3.0.0.65 | LiftMaster MyQ: 1.3.7006.42100
          mcsMQTT: 4.0.2.2 | PHLocation2: 3.0.0.53 | Pushover 3P: 0.0.0.45 | Z-Wave: 3.0.1.262

          Z-Net version: 1.0.23 using a HomeSeer SmartStick+: 6.04 (ZDK 6.81.3)

          Comment


          • #6
            Originally posted by Joris Vandoren View Post
            Thanks, for the inputs.

            My hometroller is installed on the groundfloor in the far right corner of the house. The ZNET is installed in the center of the house +- 1 m above the groundfloor.
            This setting gives good coverage in my house, except for the far left corner in the cellar.
            I've tried already to place a z-wave extender from Aeotec, but this didn't solve the communication problems I had with my zwave devices in the cellar.

            I have a USB extender from Aten (UCE260). If I use a UTP cat6 cable of about 30 m, I can connect one of the usb ports on my hometroller with a ZME-UZB1 usb dongle in the cellar and provide as such a better coverage for the z-wave devices in the cellar.

            I just asked this because placing the cable from the ZNET to the cellar is much easier than placing the cable from my hometroller to the cellar.
            For a while I did consider buying a second ZNET but this solution cost four times the price of this extender and the utp cable.

            Joris
            If you want to pursue this let me know and I can guide you through. The first part, editing the configuration file is simple and will get you started. There is another piece needed to ensure reliability that is a bit more involved: setting udev rules.

            First thing is to get command line access. Recommend using PuTTY to login via ssh. Or you can connect up a keyboard and monitor. You'll need valid login credentials; hopefully they still leave enabled the Raspbian standard username/password combo pi/raspberry

            Comment


            • #7
              Originally posted by zwolfpack View Post

              If you want to pursue this let me know and I can guide you through. The first part, editing the configuration file is simple and will get you started. There is another piece needed to ensure reliability that is a bit more involved: setting udev rules.

              First thing is to get command line access. Recommend using PuTTY to login via ssh. Or you can connect up a keyboard and monitor. You'll need valid login credentials; hopefully they still leave enabled the Raspbian standard username/password combo pi/raspberry
              Yes, I appreciate your support. I'd like to continue and use my ZNET for both z-wave controllers.

              The login combo works.

              The Original ZNET setup (only one zwave usb dongle inserted) lists this info:

              pi@Z-Net-1:/etc $ ls /dev/tty*
              /dev/tty /dev/tty16 /dev/tty24 /dev/tty32 /dev/tty40 /dev/tty49 /dev/tty57 /dev/tty8
              /dev/tty0 /dev/tty17 /dev/tty25 /dev/tty33 /dev/tty41 /dev/tty5 /dev/tty58 /dev/tty9
              /dev/tty1 /dev/tty18 /dev/tty26 /dev/tty34 /dev/tty42 /dev/tty50 /dev/tty59 /dev/ttyACM0/dev/tty10 /dev/tty19 /dev/tty27 /dev/tty35 /dev/tty43 /dev/tty51 /dev/tty6 /dev/ttyAMA0
              /dev/tty11 /dev/tty2 /dev/tty28 /dev/tty36 /dev/tty44 /dev/tty52 /dev/tty60 /dev/ttyprintk
              /dev/tty12 /dev/tty20 /dev/tty29 /dev/tty37 /dev/tty45 /dev/tty53 /dev/tty61 /dev/ttyS0
              /dev/tty13 /dev/tty21 /dev/tty3 /dev/tty38 /dev/tty46 /dev/tty54 /dev/tty62
              /dev/tty14 /dev/tty22 /dev/tty30 /dev/tty39 /dev/tty47 /dev/tty55 /dev/tty63
              /dev/tty15 /dev/tty23 /dev/tty31 /dev/tty4 /dev/tty48 /dev/tty56 /dev/tty7

              pi@Z-Net-1:/etc $ lsusb
              Bus 001 Device 008: ID 0658:0200 Sigma Designs, Inc.Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
              Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
              Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

              Inserting the second usb dongle gives following info:

              pi@Z-Net-1:/etc $ ls /dev/tty*
              /dev/tty /dev/tty16 /dev/tty24 /dev/tty32 /dev/tty40 /dev/tty49 /dev/tty57 /dev/tty8
              /dev/tty0 /dev/tty17 /dev/tty25 /dev/tty33 /dev/tty41 /dev/tty5 /dev/tty58 /dev/tty9
              /dev/tty1 /dev/tty18 /dev/tty26 /dev/tty34 /dev/tty42 /dev/tty50 /dev/tty59 /dev/ttyACM0/dev/tty10 /dev/tty19 /dev/tty27 /dev/tty35 /dev/tty43 /dev/tty51 /dev/tty6 /dev/ttyACM1/dev/tty11 /dev/tty2 /dev/tty28 /dev/tty36 /dev/tty44 /dev/tty52 /dev/tty60 /dev/ttyAMA0
              /dev/tty12 /dev/tty20 /dev/tty29 /dev/tty37 /dev/tty45 /dev/tty53 /dev/tty61 /dev/ttyprintk
              /dev/tty13 /dev/tty21 /dev/tty3 /dev/tty38 /dev/tty46 /dev/tty54 /dev/tty62 /dev/ttyS0
              /dev/tty14 /dev/tty22 /dev/tty30 /dev/tty39 /dev/tty47 /dev/tty55 /dev/tty63
              /dev/tty15 /dev/tty23 /dev/tty31 /dev/tty4 /dev/tty48 /dev/tty56 /dev/tty7

              pi@Z-Net-1:/etc $ lsusb
              Bus 001 Device 013: ID 0658:0200 Sigma Designs, Inc.Bus 001 Device 008: ID 0658:0200 Sigma Designs, Inc.Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
              Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
              Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

              The files you mentioned are listed below:

              pi@Z-Net-1:/etc $ cat ser2net.conf
              BANNER:banner:\r\nser2net port \p device \d [\s] (Debian GNU/Linux)\r\n\r\n

              #2000:telnet:600:/dev/ttyS0:9600 8DATABITS NONE 1STOPBIT banner
              2001:raw:0:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT -XONXOFF -RTSCTS
              2002:raw:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT -XONXOFF -RTSCTS
              #3000:telnet:600:/dev/ttyS0:19200 8DATABITS NONE 1STOPBIT banner


              pi@Z-Net-1:/etc/udev/rules.d $ cat 99-com.rules
              SUBSYSTEM=="input", GROUP="input", MODE="0660"
              SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"
              SUBSYSTEM=="spidev", GROUP="spi", MODE="0660"
              SUBSYSTEM=="bcm2835-gpiomem", GROUP="gpio", MODE="0660"

              SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\
              chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\
              chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\
              chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\
              '"

              KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\
              ALIASES=/proc/device-tree/aliases; \
              if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \
              echo 0;\
              elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \
              echo 1; \
              else \
              exit 1; \
              fi\
              '", SYMLINK+="serial%c"

              KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\
              ALIASES=/proc/device-tree/aliases; \
              if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \
              echo 0; \
              elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \
              echo 1; \
              else \
              exit 1; \
              fi \
              '", SYMLINK+="serial%c"










              Comment


              • #8
                First you want to backup your existing /etc/ser2net.conf

                Code:
                sudo mv -f /etc/ser2net.conf /etc/ser2net.conf.bak
                Now create a new one

                Code:
                sudo nano /etc/ser2net.conf
                All that's needed is

                Code:
                2001:raw:150:/dev/ttyACM0:115200
                2002:raw:150:/dev/ttyACM1:115200
                If you haven't already done so, make sure the Z-Net's IP address is fixed. I recommend assigning a fixed DHCP address in the router, or you can use the Z-Net's web interface to set a static IP address.

                Reboot the unit with the original UZB installed and the new one not connected. After its up, connect the new one. This is to insure that the original is assigned to ttyACM0 and the new to ttyACM1. Later we'll add "udev" rules to do this automatically.

                At HomeSeer web interface, verify that your original Z-Wave interface is connected as normal. This verifies that the new ser2net config is ok.

                Now, add the new interface. From Plug-ins-.Z-Wave->Controller Management, click 'Add Interface', select Interface Model 'Ethernet Interface', enter the Z-Net IP Address, set Port Number to 2002, and give it a name. Click on the connect icon. If all goes to plan, the interface will connect successfully.

                Now both interfaces are operational - but here is a potential problem: the first UZB to be recognized at boot or when hot-plugged is going to be ttyACM0 and the second one ttyACM1. To ensure that the same name is assigned to the same device every time, we'll set up "udev" rules. What we need to do is to query the two devices and identify an attribute that differs between the two. For example, some USB device vendors provide a "serial" attribute. To locate a good attribute to use, issue these commands and post the output

                Code:
                udevadm info -a /dev/ttyUSB0
                udevadm info -a /dev/ttyUSB1

                Comment


                • #9
                  All worked fine.
                  As I'm using two identical devices (ZMEEUZB1), I found only one attribute different on both devices:
                  ATTRS{devpath}=="1.2" for device ttyACM0
                  ATTRS{devpath}=="1.4.1" for device ttyACM1

                  this is the dump of both requested udevadm commands:


                  pi@Z-Net-1:~ $ udevadm info -a /dev/ttyACM0

                  Udevadm info starts with the device specified by the devpath and then
                  walks up the chain of parent devices. It prints for every device
                  found, all possible attributes in the udev rules key format.
                  A rule to match, can be composed by the attributes of the device
                  and the attributes from one single parent device.

                  looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/tty/ttyACM0':
                  KERNEL=="ttyACM0"
                  SUBSYSTEM=="tty"
                  DRIVER==""

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0':
                  KERNELS=="1-1.2:1.0"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="cdc_acm"
                  ATTRS{bInterfaceClass}=="02"
                  ATTRS{bmCapabilities}=="0"
                  ATTRS{bInterfaceSubClass}=="02"
                  ATTRS{bInterfaceProtocol}=="01"
                  ATTRS{bNumEndpoints}=="01"
                  ATTRS{authorized}=="1"
                  ATTRS{supports_autosuspend}=="1"
                  ATTRS{bAlternateSetting}==" 0"
                  ATTRS{bInterfaceNumber}=="00"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2':
                  KERNELS=="1-1.2"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="00"
                  ATTRS{devpath}=="1.2"
                  ATTRS{idVendor}=="0658"
                  ATTRS{speed}=="12"
                  ATTRS{bNumInterfaces}==" 2"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="8"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="9"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="100mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="80"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="0"
                  ATTRS{bcdDevice}=="0000"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="680"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{removable}=="removable"
                  ATTRS{idProduct}=="0200"
                  ATTRS{bDeviceClass}=="02"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
                  KERNELS=="1-1"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="02"
                  ATTRS{devpath}=="1"
                  ATTRS{idVendor}=="0424"
                  ATTRS{speed}=="480"
                  ATTRS{bNumInterfaces}==" 1"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="64"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="2"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="2mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="e0"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="5"
                  ATTRS{bcdDevice}=="0200"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="99"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{removable}=="unknown"
                  ATTRS{idProduct}=="9514"
                  ATTRS{bDeviceClass}=="09"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
                  KERNELS=="usb1"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="01"
                  ATTRS{devpath}=="0"
                  ATTRS{idVendor}=="1d6b"
                  ATTRS{speed}=="480"
                  ATTRS{bNumInterfaces}==" 1"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="64"
                  ATTRS{authorized_default}=="1"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="1"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="0mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="e0"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="1"
                  ATTRS{interface_authorized_default}=="1"
                  ATTRS{bcdDevice}=="0404"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{serial}=="3f980000.usb"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="25"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{manufacturer}=="Linux 4.4.13-v7+ dwc_otg_hcd"
                  ATTRS{removable}=="unknown"
                  ATTRS{idProduct}=="0002"
                  ATTRS{bDeviceClass}=="09"
                  ATTRS{product}=="DWC OTG Controller"

                  looking at parent device '/devices/platform/soc/3f980000.usb':
                  KERNELS=="3f980000.usb"
                  SUBSYSTEMS=="platform"
                  DRIVERS=="dwc_otg"
                  ATTRS{hnp}=="HstNegScs = 0x0"
                  ATTRS{srp}=="SesReqScs = 0x1"
                  ATTRS{regvalue}=="invalid offset"
                  ATTRS{hsic_connect}=="HSIC Connect = 0x1"
                  ATTRS{guid}=="GUID = 0x2708a000"
                  ATTRS{mode}=="Mode = 0x1"
                  ATTRS{srpcapable}=="SRPCapable = 0x1"
                  ATTRS{regdump}=="Register Dump"
                  ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
                  ATTRS{ggpio}=="GGPIO = 0x00000000"
                  ATTRS{hprt0}=="HPRT0 = 0x00001405"
                  ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 380 msecs (38 jiffies)"
                  ATTRS{driver_override}=="(null)"
                  ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
                  ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
                  ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
                  ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
                  ATTRS{busconnected}=="Bus Connected = 0x1"
                  ATTRS{hcddump}=="HCD Dump"
                  ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
                  ATTRS{spramdump}=="SPRAM Dump"
                  ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
                  ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
                  ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
                  ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
                  ATTRS{devspeed}=="Device Speed = 0x0"
                  ATTRS{fr_interval}=="Frame Interval = 0x1d4c"
                  ATTRS{rem_wakeup_pwrdn}==""
                  ATTRS{bussuspend}=="Bus Suspend = 0x0"
                  ATTRS{buspower}=="Bus Power = 0x1"
                  ATTRS{hnpcapable}=="HNPCapable = 0x1"
                  ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 930 msecs (93 jiffies)"
                  ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
                  ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
                  ATTRS{regoffset}=="0xffffffff"

                  looking at parent device '/devices/platform/soc':
                  KERNELS=="soc"
                  SUBSYSTEMS=="platform"
                  DRIVERS==""
                  ATTRS{driver_override}=="(null)"

                  looking at parent device '/devices/platform':
                  KERNELS=="platform"
                  SUBSYSTEMS==""
                  DRIVERS==""

                  pi@Z-Net-1:~ $ udevadm info -a /dev/ttyACM1

                  Udevadm info starts with the device specified by the devpath and then
                  walks up the chain of parent devices. It prints for every device
                  found, all possible attributes in the udev rules key format.
                  A rule to match, can be composed by the attributes of the device
                  and the attributes from one single parent device.

                  looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.0/tty/ttyACM1':
                  KERNEL=="ttyACM1"
                  SUBSYSTEM=="tty"
                  DRIVER==""

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.0':
                  KERNELS=="1-1.4.1:1.0"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="cdc_acm"
                  ATTRS{bInterfaceClass}=="02"
                  ATTRS{bmCapabilities}=="0"
                  ATTRS{bInterfaceSubClass}=="02"
                  ATTRS{bInterfaceProtocol}=="01"
                  ATTRS{bNumEndpoints}=="01"
                  ATTRS{authorized}=="1"
                  ATTRS{supports_autosuspend}=="1"
                  ATTRS{bAlternateSetting}==" 0"
                  ATTRS{bInterfaceNumber}=="00"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4.1':
                  KERNELS=="1-1.4.1"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="00"
                  ATTRS{devpath}=="1.4.1"
                  ATTRS{idVendor}=="0658"
                  ATTRS{speed}=="12"
                  ATTRS{bNumInterfaces}==" 2"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="8"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="10"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="100mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="80"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="0"
                  ATTRS{bcdDevice}=="0000"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="106"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{removable}=="unknown"
                  ATTRS{idProduct}=="0200"
                  ATTRS{bDeviceClass}=="02"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4':
                  KERNELS=="1-1.4"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="01"
                  ATTRS{devpath}=="1.4"
                  ATTRS{idVendor}=="1a40"
                  ATTRS{speed}=="480"
                  ATTRS{bNumInterfaces}==" 1"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="64"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="8"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="100mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="e0"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="4"
                  ATTRS{bcdDevice}=="0111"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="30"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{removable}=="removable"
                  ATTRS{idProduct}=="0101"
                  ATTRS{bDeviceClass}=="09"
                  ATTRS{product}=="USB 2.0 Hub"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
                  KERNELS=="1-1"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="02"
                  ATTRS{devpath}=="1"
                  ATTRS{idVendor}=="0424"
                  ATTRS{speed}=="480"
                  ATTRS{bNumInterfaces}==" 1"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="64"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="2"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="2mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="e0"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="5"
                  ATTRS{bcdDevice}=="0200"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="99"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{removable}=="unknown"
                  ATTRS{idProduct}=="9514"
                  ATTRS{bDeviceClass}=="09"

                  looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
                  KERNELS=="usb1"
                  SUBSYSTEMS=="usb"
                  DRIVERS=="usb"
                  ATTRS{bDeviceSubClass}=="00"
                  ATTRS{bDeviceProtocol}=="01"
                  ATTRS{devpath}=="0"
                  ATTRS{idVendor}=="1d6b"
                  ATTRS{speed}=="480"
                  ATTRS{bNumInterfaces}==" 1"
                  ATTRS{bConfigurationValue}=="1"
                  ATTRS{bMaxPacketSize0}=="64"
                  ATTRS{authorized_default}=="1"
                  ATTRS{busnum}=="1"
                  ATTRS{devnum}=="1"
                  ATTRS{configuration}==""
                  ATTRS{bMaxPower}=="0mA"
                  ATTRS{authorized}=="1"
                  ATTRS{bmAttributes}=="e0"
                  ATTRS{bNumConfigurations}=="1"
                  ATTRS{maxchild}=="1"
                  ATTRS{interface_authorized_default}=="1"
                  ATTRS{bcdDevice}=="0404"
                  ATTRS{avoid_reset_quirk}=="0"
                  ATTRS{quirks}=="0x0"
                  ATTRS{serial}=="3f980000.usb"
                  ATTRS{version}==" 2.00"
                  ATTRS{urbnum}=="25"
                  ATTRS{ltm_capable}=="no"
                  ATTRS{manufacturer}=="Linux 4.4.13-v7+ dwc_otg_hcd"
                  ATTRS{removable}=="unknown"
                  ATTRS{idProduct}=="0002"
                  ATTRS{bDeviceClass}=="09"
                  ATTRS{product}=="DWC OTG Controller"

                  looking at parent device '/devices/platform/soc/3f980000.usb':
                  KERNELS=="3f980000.usb"
                  SUBSYSTEMS=="platform"
                  DRIVERS=="dwc_otg"
                  ATTRS{hnp}=="HstNegScs = 0x0"
                  ATTRS{srp}=="SesReqScs = 0x1"
                  ATTRS{regvalue}=="invalid offset"
                  ATTRS{hsic_connect}=="HSIC Connect = 0x1"
                  ATTRS{guid}=="GUID = 0x2708a000"
                  ATTRS{mode}=="Mode = 0x1"
                  ATTRS{srpcapable}=="SRPCapable = 0x1"
                  ATTRS{regdump}=="Register Dump"
                  ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
                  ATTRS{ggpio}=="GGPIO = 0x00000000"
                  ATTRS{hprt0}=="HPRT0 = 0x00001005"
                  ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 390 msecs (39 jiffies)"
                  ATTRS{driver_override}=="(null)"
                  ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
                  ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
                  ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
                  ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
                  ATTRS{busconnected}=="Bus Connected = 0x1"
                  ATTRS{hcddump}=="HCD Dump"
                  ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
                  ATTRS{spramdump}=="SPRAM Dump"
                  ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
                  ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
                  ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
                  ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
                  ATTRS{devspeed}=="Device Speed = 0x0"
                  ATTRS{fr_interval}=="Frame Interval = 0x1d4c"
                  ATTRS{rem_wakeup_pwrdn}==""
                  ATTRS{bussuspend}=="Bus Suspend = 0x0"
                  ATTRS{buspower}=="Bus Power = 0x1"
                  ATTRS{hnpcapable}=="HNPCapable = 0x1"
                  ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 930 msecs (93 jiffies)"
                  ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
                  ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
                  ATTRS{regoffset}=="0xffffffff"

                  looking at parent device '/devices/platform/soc':
                  KERNELS=="soc"
                  SUBSYSTEMS=="platform"
                  DRIVERS==""
                  ATTRS{driver_override}=="(null)"

                  looking at parent device '/devices/platform':
                  KERNELS=="platform"
                  SUBSYSTEMS==""
                  DRIVERS==""

                  Comment


                  • #10
                    I'm thinking that the 1.2 vs. 1.4.1 is driven by which of the four USB ports the device is plugged into. Also the addition of ".1" could be due to the extender.

                    The "urbnum" attribute looks promising. I don't have my UZB on hand (loaned it out), but testing a couple other serial devices, urbnum stays constant when the device is moved between all four USB ports.

                    Let's give this a try. Create a new udev ruleset file,

                    Code:
                    sudo nano /etc/udev/rules.d/99-ztty.rules
                    with contents

                    Code:
                    # UZB Z-Wave controller #1
                    SUBSYSTEM=="tty", ATTRS{urbnum}=="680", SYMLINK+="zwave1"
                    
                    # UZB Z-Wave controller #2
                    SUBSYSTEM=="tty", ATTRS{urbnum}=="106", SYMLINK+="zwave2"
                    To test, unplug then replug the UZB's in one at a time, then run

                    Code:
                    ls -l /dev/zwave*
                    For the 1st you should see
                    Code:
                    lrwxrwxrwx 1 root root 7 Sep 20 12:24 /dev/zwave1 -> ttyACM0
                    and for 2nd
                    Code:
                    lrwxrwxrwx 1 root root 7 Sep 20 12:24 /dev/zwave2 -> ttyACM0
                    Try them in a couple of different USB ports to make sure its consistent.

                    Note now when the new UZB is plugged in before the old, the link should be zwave1 -> ttyACM1 and zwave2 -> ttyACM0.

                    So now we need to go back to the ser2net config file and use these "stable" device pointers

                    Code:
                    2001:raw:150:/dev/zwave1:115200
                    2002:raw:150:/dev/zwave2:115200
                    Tell ser2net to reread its config

                    Code:
                    sudo killall -HUP ser2net
                    or just reboot. Fingers crossed!!

                    Comment


                    • #11
                      That looks like a lot of work. So all of this programming is what you have to do to add another z-net to the network? Wouldn’t it be just as good to install a couple of repeaters midway and in the low signal area? Are we worried about adding more hops?

                      Comment


                      • #12
                        Originally posted by tome10 View Post
                        That looks like a lot of work. So all of this programming is what you have to do to add another z-net to the network? Wouldn’t it be just as good to install a couple of repeaters midway and in the low signal area? Are we worried about adding more hops?
                        No, he's wanting to add a 2nd z-wave controller to his one z-net. Big difference. And not that much work, given that he already has the necessary hardware.

                        Comment


                        • #13
                          After some reading, urbnum likely isn't a good choice. It's a counter that will increment as the device is used. So your best bet is probably devpath or KERNELS. Downside of this is you'll have to always connect to the same ports.

                          Code:
                          # UZB Z-Wave controller #1
                          SUBSYSTEM=="tty", ATTRS{devpath}=="1.2", SYMLINK+="zwave1"
                          
                          # UZB Z-Wave controller #2
                          SUBSYSTEM=="tty", ATTRS{devpath}=="1.4.1", SYMLINK+="zwave2"

                          Comment


                          • #14
                            Hello, I was out for the weekend.

                            I expected the devpath attribute to be my only option, so I keep my usb devices plugged in the same port.
                            Fyi, the urbnum attribute changes with every reboot or plug out/in action on the usb devices.

                            All works fine, several devices are now active in the new network without any problem and all stays stable after several reboots (Hometroller and ZNET).
                            Thanks for the great support!!!

                            Originally posted by tome10 View Post
                            That looks like a lot of work. So all of this programming is what you have to do to add another z-net to the network? Wouldn’t it be just as good to install a couple of repeaters midway and in the low signal area? Are we worried about adding more hops?
                            I have several devices midway, even a dedicated repeater device, but still I'm experiencing intermittant hickups with several devices in the cellar.
                            There's a lot of reinforced concrete and fine concrete nets between the groundfloor and the cellar. This is the main reason why I decided to go for a second network controller in the cellar.

                            Comment

                            Working...
                            X