Tuesday, August 16, 2016

Programmatic Add and Removal of USB devices in Linux

As a part of setting up my 9$ CHIP computer, I was running my chip from 500 mA/1000 mA power sources and sometimes the CHIP stops during startup due to high current consumption.

To stop chip from stopping CHIP during boot I had taken following steps:

  1. Ensure the power supply is good and at least 1000 mA
  2. Ensure that CHIP is connected to a LiPo battery, so that battery can supply burst current situations
  3. Added /etc/systemd/system/no-limit.service 
    1. This is nothing but execution of axp209 --no-limit during CHIP-booting by systemd
  4. Stopping USB hubs and USB devices during startup programatically
    1. Write systemd scripts for using above script -- TODO

To achieve the 4th step, one  has to programmatically detect  USB devices on USB Hub and stop them. Later once startup is finished, start the USB devices programmatically.

So I write one helper script that does this job automatically and this code can be read at github

This script might be used for non-USB devices(might need some modifications). Though tried and tested on CHIP, it might run on PCs and other Linux boxes with little modifications. If you have suggestions/modifications, please let me know or update in git.

No comments:

Post a Comment