This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

The CC2531 USB dongle does not show up as /dev/ttyACM0 on Raspberry Pi 3

Other Parts Discussed in Thread: CC2531, Z-STACK, CC-DEBUGGER

I have connected a brand new CC2531 USB dongle to a Paspberry Pi 3. What do I need to do to make the device show up as /dev/ttyACM0 ?

This is Raspberry Pi:

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux

Before inserting the CC2531 USB dongle:

pi@raspberrypi:~ $ ls -alF /dev/ttyA*
crw-rw---- 1 root dialout 204, 64 Jul 26 20:39 /dev/ttyAMA0

After inseting the CC2531 USB dongle:

pi@raspberrypi:~ $ ls -alF /dev/ttyA*
crw-rw---- 1 root dialout 204, 64 Jul 26 20:39 /dev/ttyAMA0

No change. /dev/ttyACM0 is still missing, even though it is recogniced as a USB device:

pi@raspberrypi:~ $ dmesg | tail -5 
[  394.133095] usb 1-1.2: new full-speed USB device number 4 using dwc_otg
[  394.247583] usb 1-1.2: New USB device found, idVendor=0451, idProduct=16ae
[  394.247604] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  394.247617] usb 1-1.2: Product: CC2531 USB Dongle
[  394.247630] usb 1-1.2: Manufacturer: Texas Instruments

pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 0451:16ae Texas Instruments, 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

Without success, I also tried this 'modprobe':

pi@raspberrypi:~ $ sudo modprobe usbserial vendor=0x0451 product=0x16ae

pi@raspberrypi:~ $ dmesg | tail -5 [ 2534.334153] usbcore: registered new interface driver usbserial [ 2534.334225] usbcore: registered new interface driver usbserial_generic [ 2534.334277] usbserial: USB Serial support registered for generic [ 2534.334365] usbserial_generic 1-1.2:1.0: Generic device with no bulk out, not allowed. [ 2534.334392] usbserial_generic: probe of 1-1.2:1.0 failed with error -5
pi@raspberrypi:~ $ lsmod
Module                  Size  Used by
usbserial              22115  0
bnep                   10340  2
hci_uart               17943  1
btbcm                   5929  1 hci_uart
bluetooth             326105  22 bnep,btbcm,hci_uart
brcmfmac              186343  0
brcmutil                5661  1 brcmfmac
cfg80211              427855  1 brcmfmac
rfkill                 16037  4 cfg80211,bluetooth
snd_bcm2835            20511  1
snd_pcm                75698  1 snd_bcm2835
snd_timer              19160  1 snd_pcm
bcm2835_gpiomem         3040  0
snd                    51844  5 snd_bcm2835,snd_timer,snd_pcm
bcm2835_wdt             3225  0
uio_pdrv_genirq         3164  0
uio                     8000  1 uio_pdrv_genirq
i2c_dev                 5859  0
fuse                   83461  3
ipv6                  347530  50

pi@raspberrypi:~ $ ls -alF /dev/ttyA* crw-rw---- 1 root dialout 204, 64 Jul 26 20:39 /dev/ttyAMA0

I also tried this 'modprobe, without success:

pi@raspberrypi:~ $ sudo modprobe -r usbserial 

pi@raspberrypi:~ $ sudo modprobe cdc_acm vendor=0x0451 product=0x16ae
pi@raspberrypi:~ $ dmesg | tail -5 [ 3757.362219] usbcore: deregistering interface driver usbserial [ 3770.778824] cdc_acm: unknown parameter 'vendor' ignored [ 3770.778839] cdc_acm: unknown parameter 'product' ignored [ 3770.779170] usbcore: registered new interface driver cdc_acm [ 3770.779176] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
pi@raspberrypi:~ $ lsmod
Module                  Size  Used by
cdc_acm                17370  0
bnep                   10340  2
hci_uart               17943  1
btbcm                   5929  1 hci_uart
bluetooth             326105  22 bnep,btbcm,hci_uart
brcmfmac              186343  0
brcmutil                5661  1 brcmfmac
cfg80211              427855  1 brcmfmac
rfkill                 16037  4 cfg80211,bluetooth
snd_bcm2835            20511  1
snd_pcm                75698  1 snd_bcm2835
snd_timer              19160  1 snd_pcm
bcm2835_gpiomem         3040  0
snd                    51844  5 snd_bcm2835,snd_timer,snd_pcm
bcm2835_wdt             3225  0
uio_pdrv_genirq         3164  0
uio                     8000  1 uio_pdrv_genirq
i2c_dev                 5859  0
fuse                   83461  3
ipv6                  347530  50

pi@raspberrypi:~ $ ls -alF /dev/ttyA* crw-rw---- 1 root dialout 204, 64 Jul 26 20:39 /dev/ttyAMA0

Still missing. by the way, my project is to run the precompiled binary servers lanched by 'zigbeeHAgw' on the Raspberry Pi, but first I must find out how to make the device show up as /dev/ttyACM0 , i.e. a modem with the abstract control model.

Suggestions, anyone?

  • You have to program your CC2531 USB dongle with prebuilt FW CC2531-GW-ZNP_38724.hex in Z-Stack Linux GW packet.
  • Thanks YiKai Chen, for your swift reply!


    So I should use the tool 'sbl_tool.bin' to program the CC2531 USB dongle with a new image to make it appear as /dev/ttyACM0, right? To me it seems like 'sbl_tool.bin' also depends on the device appearing as /dev/ttyACM0:

    pi@raspberrypi:~/ZigBee/tools $ sudo ./sbl_tool.bin ../misc/CC2531-GW-ZNP_38724.bin USB
    
    ***** TI LPRF ZigBee Serial Bootloader Tool for Linux v. 0.83 *****
    Executed ./sbl_tool.bin on Jun  6 2014 21:32:15
    Requested file file: ../misc/CC2531-GW-ZNP_38724.bin
    Using USB transport
    Resetting USB connection. It takes a few seconds...
    /dev/ttyACM0: No such file or directory
    /dev/ttyACM0 open failed
    /dev/ttyACM0: No such file or directory
    /dev/ttyACM0 open failed
    
    pi@raspberrypi:~/ZigBee/tools $ sudo ./sbl_tool.bin ../misc/CC2531-GW-ZNP_38724.bin usb ***** TI LPRF ZigBee Serial Bootloader Tool for Linux v. 0.83 ***** Executed ./sbl_tool.bin on Jun 6 2014 21:32:15 Requested file file: ../misc/CC2531-GW-ZNP_38724.bin Using USB transport Resetting USB connection. It takes a few seconds... /dev/ttyACM0: No such file or directory /dev/ttyACM0 open failed /dev/ttyACM0: No such file or directory /dev/ttyACM0 open failed
    pi@raspberrypi:~/ZigBee/tools $ ls -alF /dev/ttyA* crw-rw---- 1 root dialout 204, 64 Jul 26 20:39 /dev/ttyAMA0

    So /dev/ttyACM0 is still missing. Further suggestions?

  • You have to use CC Debugger and Flash Programmer to download that hex file to your CC2531 USB dongle.
  • Thanks YiKai Chen, for your support!

    To me this sounds like a bad joke. I do not want to program nor debug this dongle. Do you know the part number for a CC2531 USB dongle with the correct image pre-installed?
  • As I know, TI does not sale a CC2531 USB dongle with this prebuilt hex file. I am afraid that you have to buy CC Debugger to do this. The good news might be that CC Debugger only costs about US50.
  • Thanks again YiKai Chen, for your support!

    To whom it may concern: As an experienced computer engineer, but a newcomer to Zigbee, I spent a lot of time and my expectations were not fulfilled. :-(
  • You are welcome. I know your frustrations and that's why I help people here.
  • Just to chime in with my own experience thus far....

    No support for windows 10 - all the docs I've seen are for Windows XP...  I'm not creating yet another VM..

    The Z-Stack Linux Gateway ONLY runs on 32 BIT Ubuntu (seriously... a zip file was too difficult?)  I had to create a new 32 bit vm FOR ONLY THIS!  And after that, the damn thing is just an archive of stuff, not even a real installer.  I had to then copy all of it on to the Raspberry Pi I'm testing on.  

    On the Pi, the device doesn't show up in the /dev list - though its there in 'lsusb' etc.  which based on the previous post leads me to...

    There's no usable image on this thing??  Does the term false advertising ring a bell?  I already ordered the 'kit' with the debugger, but I swear if that doesn't work, we're going to have words.  This is 2016, not 1990, why in gods name is this thing not flashable over usb...

    If you don't have the ROI to justify actually doing something with this device, you should discontinue it - because thats how these pages and the hardware feel - like a dead legacy product thats being kept around for archival purposes.

  • This is an engineer to engineer forum and I agree that TI has poor document for their solutions. That's why people here to help others. Complain doesn't help and please be polite.
  • Hi,
    CC2531 dongle by default is flashed with 802.15.4 sniffer. So yes you must purchase a CC-debugger to flash the ZNP firmware, as it is explained in the Quick Start guide. I apologize if this was not clear in the Z-Stack Linux gateway landing page.
    The Z-Stack Linux Gateway runs by default on TI-based BeagleBone black. The SW could potentially run on other Linux machines (even not with a TI processor, like the Raspberry Pi).
    Please note the Linux kernel distribution in your host processor of choice must support the serial modem class device (or ACM) for the device to show up as /dev//ttyACM0.

    Please look at this post which shows an example of how to port the Z-Stack Linux GW SW to Raspberri pi

    sunmaysky.blogspot.com/.../how-to-do-porting-of-ti-z-stack-linux.html

    Thanks,
    TheDarkSide
  • It looks like my reply to this disappeared or some such - probably just as well. YK - my apologies for, well, being a brat, I made an assumption that was wrong and that's my bad (and to anyone else who was reading this). While I still maintain that the 32bit OS thing is.. you know.. I should have taken a step back instead of dumping into the keyboard. I have been adequately humbled and fell like an *ss. To your credit, you're far more diplomatic than I, and a are clearly an asset to this community. Please don't let my foolish, troll-like arrogance hamper your efforts. :)
  • Don't worry about me. I am here to help and if you still have question or problem, feel free to discuss.
  • I don't find the firmware : FW CC2531-GW-ZNP_38724.hex.

    someone can tell me where I can find it ?
  • If you download and install Z-Stack Linux GW reference design, you can find it under folder Z-Stack_Linux_Gateway-1.0.1\Firmware. I attach it for your reference.

    CC2531-GW-ZNP_38724.zip

  • You are welcome