2

I want to restart USB modem like a power on restart without rebooting and unplugging it physically in Linux machine. I have tried doing this procedure :

  • echo -n 0 > /sys/devices/platform/omap/ti81xx-usbss/musb-hdrc.0/usb1/bConfigurationValue
  • echo -n 1 > /sys/devices/platform/omap/ti81xx-usbss/musb-hdrc.0/usb1/bConfigurationValue

But i was only able to disconnect it but the 2nd command failed. Giving the following prints :

hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
usb 1-1: new full speed USB device using musb-hdrc and address 4
usb 1-1: device descriptor read/64, error -19
usb 1-1: device descriptor read/64, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 5
usb 1-1: device descriptor read/64, error -19
usb 1-1: device descriptor read/64, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 6
usb 1-1: device not accepting address 6, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 7
usb 1-1: device not accepting address 7, error -19
hub 1-0:1.0: unable to enumerate USB device on port 1

Is there any way in which I can automate this resetting procedure. Such that if I insmod a module, it should register the USB device and when I rmmod a module it shall disconnect the USB device.

Is there any such Module ?

  • 1
    What do you mean by "reset"? That seems to be a different question than "disconnect/reconnect" and may refer to restarting the device as a power-on reset, disconnecting the remote connection, or re-enumerating the USB device. What are you actually trying to retrieve? My answer was going to be toggle the DTR; but I am not sure what you are asking. – Clifford Jun 01 '15 at 08:39
  • Thank u for replying. I mean to restart a USB modem/port like power-on reset. without reboot and without unplugging the device. – swapneel mashalkar Jun 01 '15 at 08:45
  • How would that be related to embedded systems? – too honest for this site Jun 01 '15 at 16:04
  • You should clarify the question by editing the question rather than by commenting. Your comment however is no clearer; looks like an XY problem - you have perhaps invented a solution to your real problem and made the problem one of how to implement your solution; ask about the real problem. – Clifford Jun 01 '15 at 17:14
  • http://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line – 0andriy Jun 14 '15 at 16:07

1 Answers1

0

This is like any other interface where you want to shutdown/no-shutdown on an interface administratively.

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>

void main(int argc, char **argv)
{
    const char *filename;
    int fd;

     filename = argv[1];
    fd = open(filename, O_WRONLY);
    ioctl(fd, USBDEVFS_RESET, 0);
    close(fd);
    return;
}

Compile the code:

$ gcc -o usb-reset usb-reset.c

I have Arduino connected to my ubuntu machine at /dev/ttyACM0, i will try to reset Arduino in the following way:

sudo ./usb-reset /dev/ttyACM0

This reset the board!

Milind Deore
  • 2,887
  • 5
  • 25
  • 40