It seems I only know enough linux to get myself in trouble.

I'm working on a couple of embedded systems (two different models) both running linux. I've been troubleshooting a modem support code that I had working with the newer one of the two. I stopped the code and tried to manually load the usbserial driver. On the newer device, when I load the usbserial driver, four devices appear in /dev/ttyUSB#.

What I did

I noted that there were actually 16 ttyUSB## devices listed all the time on the older device. They never disappear. I'm guessing [now] it is because the older kernel works differently or something. Unfortunately, I went ahead and deleted all 16 ttyUSB## devices. Now they are gone and won't come back. I don't know how to create character devices. What can I do to get those devices back?

Kernel Version:

uname -r returns

Additional Information

If there is some important piece of information I've left out, comment and I'll add it. Thanks in advance!


You can manually create the /dev entry using

    mknod /dev/ttyUSBn c 188 n
  • Parameters:
    • mknod is widely known tool to create /dev entries
    • /dev/ttyUSBn: device name
    • c : char device
    • 188 : major device number
    • n : minor device number,ttyUSB0, ttyUSB1, etc.

But the device should be created automatically according to the udev rules

  • 1
    Embedded systems don't necessarily use udev. – cjm May 8 '15 at 20:41

Traditionally, unix systems have a script to create entries in /dev, called MAKEDEV and located in /dev. This script is often present on Linux, but may be absent on embedded devices where the designer assumed that all devices would be present, or on systems running udev where devices entries are normally created automatically. Note that MAKEDEV usually creates entries in the current directory, so run cd /dev first.

There's no standard for arguments that you pass to /dev/MAKEDEV — usually the arguments denote some set of device entries to create. On Debian, /dev/MAKEDEV usb creates ttyUSB* as well as a bunch of others. You can also look for ttyUSB in the MAKEDEV script to figure out what command line to run. The low-level command that creates device entries is mknod.

If your system uses udev, run udevadm trigger -s usb-serial to re-create /dev entries as well as run any command associated with the discovery of a device. (In this case the device is the serial port, not a device that gets plugged into the port.)

  • My particular system doesn't use udev and doesn't have a MAKEDEV script either. Nonetheless, this information is appreciated. – Jon May 11 '15 at 18:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.