I have a small IoT device that I am trying to program. When I plug it into my Mac, an interface pops up under ifconfig and I can ssh into it at address Unfortunately, I need to reflash the firmware on it, and the firmware update only runs on Linux.

My process for enabling on Linux for other IoT devices has been as follows:

  1. Enable the usb device under Devices->USB->USB Settings
  2. Connect the Device
  3. See the device pop up under Devices->USB and lsusb
  4. An interface appears on ifconfig, and I can ssh into the device

This process works for similar IoT devices of mine and allows me to ssh into the device. For this device, every step of this works except no interface comes up for me to ssh into the board. I'm not very familiar with serial communications, so my questions are:

  • what is a good thing to research to try to solve this problem?
  • What does the OS really have to do in order to establish this data connections?
  • What solutions can I try to remedy this issue?

E: Adding more information!

I am using Sierra's Mangoh Red WP76. I can ssh into WP75 and WP85 models but not WP76, except on my mac side. @Mark, I am running VirtualBox with Ubuntu 16.04

  • 4
    maybe you could give us the brand and model you're using. Most likely it used a driver that emulate Ethernet over USB, but how can we be sure you don't give us that much information. – Kiwy Feb 15 '18 at 14:56
  • 1
    You're mentioning quite a lot of different devices without naming any of them. What brand/model is For this device, every step of this works except that you are describing? – Stefan M Feb 15 '18 at 15:03
  • Are you running Linux on a VM on the Mac? If so, which VM software? – Mark Plotnick Feb 15 '18 at 18:17
  • @Kiwy I am using Sierra's Mangoh Red WP76. I can ssh into WP75 and WP85 models but not WP76, except on my mac side. I am running VirtualBox with Ubuntu 16.04 – Ryan Feb 15 '18 at 21:20
  • So, the other devices run some sort of SSH server, and you expect that this one does too? What happens when you try to connect to it with ssh? Does using -vv with ssh give any hints? What is the output? – Kusalananda Feb 15 '18 at 21:28

General process when you connect a USB device: The device gets enumerated, which means the host learns information about the device, in particular the vendor and the device id, and which class of device it is. According to this information, the kernel then searches for matching drivers, loads these drivers and use them to initialize the device. For network-like USB devices the corresponding driver produces a network interface. The OS then initializes the network interface according to administrator policies outside the kernel.

During this process, the kernel produces output, which can be accessed via dmesg in a terminal. The vendor and device id can be seen there, as well as when you list all USB devices using lsusb.

So the first step for any vaguely hardware or kernel-related problems on Linux is to look at dmesg. Compare the output for the problematic device with those of the other devices. If you don't understand the output, edit your question with the additional lines that appear after you plug in the problematic device.

This maybe already solves the question of what goes wrong.

Not all IoT devices are similar; and not all IoT devices will appear as USB network devices. Another popular option is to appear as serial device. Under Linux, these normally have a tty (teletype) in the name. This would mean you can't ssh into it, but you'll have to use some serial communication program like minicom or picocom.

Another important step in solving USB related problem is to google for the vendor and device id (4 hexadecimal digits each) in the format 0123:4567 is it appears in lsusb. Often you'll find that others have run into similar problems with a particular device.

Usually, the firmware update problem is the other way around: An USB device uses some proprietary protocol to update the firmware, and only drivers/tools for Windows are available...

  • thanks for taking the time to answer this. I'll check the dmesg logs and do some other digging as you suggest – Ryan Feb 16 '18 at 15:26

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.