Linux Ubuntu 16.04 not create ttyACM* dev

Status
Not open for further replies.
Hi all,
i'm very new in this forum.
When I connect teensy32, dev ttyACM * is not created, and I can not communicate with the device.
The result of lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 2109:8110 VIA Labs, Inc. Hub
Bus 004 Device 004: ID 1058:10a8 Western Digital Technologies, Inc. Elements Portable (WDBUZG)
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 009: ID 13d3:5188 IMC Networks
Bus 003 Device 015: ID 13d3:3402 IMC Networks
Bus 003 Device 038: ID 26c0:2486
Bus 003 Device 010: ID 03f0:4117 Hewlett-Packard LaserJet 1018
Bus 003 Device 008: ID 0bc2:3001 Seagate RSS LLC
Bus 003 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 011: ID 05ac:0250 Apple, Inc. Aluminium Keyboard (ISO)
Bus 003 Device 007: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 003 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 003 Device 003: ID 2109:2811 VIA Labs, Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

the teensy is Device 38 and 49-teensy.rules config is

ATTRS{idVendor}=="26c0", ATTRS{idProduct}=="2486", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="26c0", ATTRS{idProduct}=="2486", ENV{MTP_NO_PROBE}="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="26c0", ATTRS{idProduct}=="2486", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="26c0", ATTRS{idProduct}=="2486", MODE:="0666"

I need to connect teensy to terminal for comunication.

Thanks All
Cyfer
 
Is this a brand now Teensy, that has not been programmed?
Did you follow the instructions to copy the rules file into the appropriate place /etc/udev/rules.d? I believe?

On brand new Teensy boards, they are programmed with a simple blink program where the USB type does not include Serial. As such no such /dev/ttyACMx object will be created. There is a RAW Hid created for the object.

With the current beta program, this should show up in the Serial port list as part of the Arduino IDE.

What I do with nice new shiny boards:
a) Run Arduino. Make sure Board type set to Teensy 3.2... Make sure USB Type set to Serial.
b) Load blink.ino from examples
c) click on the Arduino Verify button, which should compile blink and load the Teensy program.
d) After the Teensy program is loaded, press the program button on the Teensy 3.2. You should then see the Teensy program show that it uploaded the program to your T3.2...

At which point, it now has the USB type of serial and the system should assign a /dev/ttyACMn object to it... After that point you should also be able to click on the download button in Arduino and it should update the program without having to physically touch the program button on the board.
 
Thanks for reply.
it is a already programmed board.
the rules are set as in the previous message. it's correct?
When it is connected to windows it is seen as com port, and i can communicate with a terminal emulator (like YAT).
in Linux i see the hid raw devices but i don't know to communicate to him

0 crw-rw-rw- 1 root root 247, 1 apr 7 00:35 hidraw1
0 crw-rw-rw- 1 root root 247, 0 apr 7 00:35 hidraw0

I've already changed the permission to be able to use with all users, but nothing work.
There is a way to communicate directly with hidraw* device?

Thanks
Cyfer
 
I would still try reprogramming the Teensy with something with USB set to Serial probably default run speed and see if it works.

With all things like this would help to know additional information, like what the computer is... Intel processor, ARM, ...

Edit your rules and ids do not look correct. Again I am assuming you did something like download it and sudo copy it into appropriate place and it shows the owner as root...

Example if I plug T3.6 into UP board (Intel 64 bit), which has the appropriate /etc/udev/rules.d file as you can see:
Code:
kurt@kurt-UP-CHT01:~$ cat /etc/udev/rules.d/49-teensy.rules
# UDEV Rules for Teensy boards, http://www.pjrc.com/teensy/
#
# The latest version of this file may be found at:
#   http://www.pjrc.com/teensy/49-teensy.rules
#
# This file must be placed at:
#
# /etc/udev/rules.d/49-teensy.rules    (preferred location)
#   or
# /lib/udev/rules.d/49-teensy.rules    (req'd on some broken systems)
#
# To install, type this command in a terminal:
#   sudo cp 49-teensy.rules /etc/udev/rules.d/49-teensy.rules
#
# Or use the alternate way (from this forum message) to download and install:
#   https://forum.pjrc.com/threads/45595?p=150445&viewfull=1#post150445
#
# After this file is installed, physically unplug and reconnect Teensy.
#
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666"
#
# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.
#
#
# If using USB Serial you get a new device each time (Ubuntu 9.10)
# eg: /dev/ttyACM0, ttyACM1, ttyACM2, ttyACM3, ttyACM4, etc
#    apt-get remove --purge modemmanager     (reboot may be necessary)
#
# Older modem proding (eg, Ubuntu 9.04) caused very slow serial device detection.
# To fix, add this near top of /lib/udev/rules.d/77-nm-probe-modem-capabilities.rules
#   SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", GOTO="nm_modem_probe_end"
#
kurt@kurt-UP-CHT01:~$ ls -l /etc/udev/rules.d
total 28
-rw-r--r-- 1 root root   62 Aug  8  2017 10-hci.rules
-rw-r--r-- 1 root root 1781 Oct  8 18:23 49-teensy.rules
-rw-r--r-- 1 root root  290 Aug  3  2017 50-gpio.rules
-rw-r--r-- 1 root root  244 Jan 13 10:41 50-leds.rules
-rw-r--r-- 1 root root   47 Aug  4  2017 50-spi.rules
-rw-r--r-- 1 root root  267 Dec 15 10:32 99-opencm-cdc.rules
-rw-r--r-- 1 root root  334 Aug  8  2017 99-sixad.rules
kurt@kurt-UP-CHT01:~$

If I do an lsusb I see:
Code:
kurt@kurt-UP-CHT01:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0424:2530 Standard Microsystems Corp.
Bus 001 Device 003: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
Bus 001 Device 002: ID 0424:4603 Standard Microsystems Corp.
[COLOR="#FF0000"]Bus 001 Device 005: ID 16c0:0483 Van Ooijen Technische Informatica Teensyduino Serial[/COLOR]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
You might try looking at your system log, like unplug the Teensy and plug it back in:
Code:
kurt@kurt-UP-CHT01:~$ dmesg | tail
[  361.030994] sdhci: Timeout waiting for Buffer Read Ready interrupt during tuning procedure, falling back to fixed sampling clock
[  994.710726] usb 1-2: new full-speed USB device number 5 using xhci_hcd
[  994.839585] usb 1-2: New USB device found, idVendor=16c0, idProduct=0483
[  994.839600] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  994.839609] usb 1-2: Product: USB Serial
[  994.839616] usb 1-2: Manufacturer: Teensyduino
[  994.839623] usb 1-2: SerialNumber: 4294967295
[  994.875817] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
[  994.877338] usbcore: registered new interface driver cdc_acm
[  994.877346] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
kurt@kurt-UP-CHT01:~$

I assume you have the cdc_acm driver installed... at least I have not installed any version of ubuntu that did not have it installed.

There is information up on main website on raw hid: https://www.pjrc.com/teensy/rawhid.html
 
the computer i use is a intel i7 OS ubuntu 16.04 lts

this is the place of rules
Code:
-rw-r--r-- 1 root root  1824 apr  6 20:09 49-teensy.rules
-rw-r--r-- 1 root root    76 gen 19 13:43 51-android.rules
-rw-r--r-- 1 root root 58549 feb 20 18:34 70-snap.core.rules
-rw-r--r-- 1 root root    91 apr  4 23:21 99-usb-serial.rules
adriano@ubuntu:/etc/udev/rules.d$

in rules i've changed the default id vendor/prduct with the ids found in lsusb

Code:
Bus 003 Device 040: ID 26c0:2486

this is the dmesg log
Code:
[391837.365039] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[391837.365041] usb 3-4: Product: Interface 1.0
[391837.365043] usb 3-4: Manufacturer: Test-Studio
[391837.365045] usb 3-4: SerialNumber: 2207760
[391837.366431] hid-generic 0003:26C0:2486.003F: hiddev0,hidraw0: USB HID v1.11 Device [Interface 1.0] on usb-0000:00:14.0-4/input0
[391837.367090] hid-generic 0003:26C0:2486.0040: hidraw1: USB HID v1.11 Device [Interface 1.0] on usb-0000:00:14.0-4/input1
[391904.917599] usb 3-4: USB disconnect, device number 41
[391933.164771] usbcore: deregistering interface driver cdc_acm
[391945.654175] usbcore: registered new interface driver cdc_acm
[391945.654182] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
 
Again I wonder if this is really a teensy? Maybe show picture of it. Also if you hold program button when you plug it in tousled, what does lausb show? What does lsusb -v -d 26c0:2486
Show?

Hopefully some other Linux people have other ideas
 
Hi
this is picture
photo_2018-04-09_17-48-44.jpg

and this is of lsusb -v -d 26c0:2486
Code:
adriano@ubuntu:/etc/udev/rules.d$ lsusb -v -d 26c0:2486

Bus 003 Device 042: ID 26c0:2486  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.01
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x26c0 
  idProduct          0x2486 
  bcdDevice            2.00
  iManufacturer           1 Test-Studio
  iProduct                2 Interface 1.0
  iSerial                 3 2207760
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           73
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      28
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      33
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               2
Device Status:     0x0000
  (Bus Powered)

when I hold program button during plug
Code:
Bus 003 Device 045: ID 16c0:0478 Van Ooijen Technische Informatica Teensy Halfkay Bootloader

I've no other idea for connect
 
As KurtE notes, the device ID for teensy in 49-teensy.rules should be 16c0, which matches the ID when you hold the program button. You should not need to edit 49-teensy.rules. If your sketch does not use Serial.begin(), there may not be a /dev/ttyACMx. can you detach everything except the USB from your T3.2 and try and load blink sketch, and then maybe an example that prints to the monitor

I am running Ubuntu 16.04 LTS with various Teensy 3* devices.

Bus 001 Device 007: ID 16c0:0483 Van Ooijen Technische Informatica Teensyduino Serial
 
So it looks like someone (you?) programmed the Teensy using some customized settings where they changed the Vendor and Product IDs and it does not include the Serial Class...

Make sure that you have the default Teensy udev rules in place...

So the real question is what do you wish to do? If you wish to program it with your own code, you should probably be able to plug the Teensy in with the program button, like you show.

You could have Arduino IDE open, with some simple program like Blink or Hello World or... Make sure the USB Type has Serial as part of it. Click the verify button in Arduino which should compile it and bring up the Teensy loader program. You should then be able to program it... Been awhile since I did the hold in button method, so don't remember if you need to hit the program button again, or if I pressed the upload in the program or was simply able to use Arduino Upload command and it did it automatically... But one of those ways should work, and then you should have an /dev/ttyACM object created...

But if you don't want to update the actual code on the board.... Then you may need to figure out what is there and if you/they put any way to do serial communications...
 
Thanks,
i ask who as programmed the board to configure the settings for serial communication.
I can't change the code on the board.

Thanks for support
 
My best guess is this Teensy was programmed for RawHID, but since the USB info has been customized, it's theoretically possible they could have implemented anything.

Maybe try compiling the RawHID example code (of course with the ID numbers changed) and see if this board sends any 64 byte packets. If it sends you data, maybe you'll be able to figure out what the 64 bytes mean? If it waits for you to send 64 byte packets, you'll probably have some extremely difficult (perhaps impossible) guesswork to figure out what data this thing expects to you send.

Even if it send you data automatically, unless the format is pretty simple, you're probably going to need info about the meaning of the data from whoever programmed this board.
 
Status
Not open for further replies.
Back
Top