Aug 042012
 

This issue, where a USB device is detected, but no USB port assigned has taken me a lot of effort to solve on several occasions, because I forgot the fix each time, so hopefully this post might help you!

In short if you connect a ‘new’ USB device and it does not ‘work’, but dmesg reports something like below and the device number increments on every dis/reconnect:
usb 4-2: new full speed USB device number 11 using uhci_hcd

The issue is that no USB port has been assigned, as seen below in this successful connection:
usb 4-2: new full speed USB device number 12 using uhci_hcd
cdc_acm 4-2:1.0: ttyACM0: USB ACM device

The following fix has worked for me on three, maybe four, systems:
sudo modprobe cdc_acm

The systems it definitely fixed were the Dangerous Prototypes OLS, a USnooBie and just this week, an Arduino UNO v2.0. Plus it probably fixed a Dangerous Prototypes BusBlaster, but my notes don’t document and it almost certainly would have fixed the very long saga I had with the Dangerous Prototypes IRToy, but it went a different, painful process, that I won’t be able to reproduce, but the root issue seemed the same.

While three of these systems are all from Dangerous Prototypes, ALL five have a different hardware USB implementation! The Arduino and Dangerous Prototypes devices are also all very popular.

Two references that helped were 1 and 2. The second, Gentoo link, talks about modprobe cdc_acm and interestingly modprobe ftdi_sio, which I have not used, but am trying to burn into my brain for the next issue I have. I must have used other sites – but apologies to them as I forgot to record the sources :(

Possibly relevant background information:

I only use the one Ubuntu laptop, so have not run into this on any other systems! The build started with 10.10 and took all upgrades up to 11.10. These devices all worked on Windows XP Pro, with only a couple of minor issues.

I have successfully used lots of other devices on the same Ubuntu laptop, including an Arduino Deumilanove, a DP BusPirate, a DP USB LCD Backpack, and three different types of USB to TTL (FTDI) convertors.

Highly relevant background information = I break stuff – lots of stuff, just by touch and sometimes it seems just by looking.

May 072012
 

Xinchejian hackerspace is still settling in to their new space, but there was a lot of activity on the weekend!

Things that I noticed included many active projects undergoing design work, coding and assembling a quadcopter (commiserations on the maiden flight crash) and first timers playing with Arduino.

Highlights for me were:

  • getting hands on a real Lophilo – this development hardware looks extremely professional, flexible, and is not “vapourware”… can’t wait to own one!
  • Swarm Robots meeting – lots of really interesting ideas
  • R2D2 was at the swarm meeting – just too cute not to give a special mention

 

Mar 072012
 

Continuing the autonomous robot sensor theme with some updated sample code for the HY-SRF05 Ultrasonic Sensor that significantly reduces the blocking (delays in program execution where NO code is run!).

Once again, the code is placed on the Wiki as part of the move to help create re-usable community content.

Mar 072012
 

One big part of my ‘relaxation’ project – ‘building’ an autonomous maze solving car is the sensors.

Installation of the four ultrasonic sensor and experimental avoidance code has shown (again) just how bad I am at visualising in 2 & 3D space. My simple avoidance logic attempts always end up avoiding big objects, but then get stuck in a tight loop “go forward” – “avoid = go back” – “go forward”.

So I thought it was time to add the Honeywell HMC5883L compass sensor (part of Christmas present to self). The sample code ran up easily (once converted all the wire-I2C commands to Arduino v1.0), so I ported the code into my code. Weeks later after umpteen different project sidetracks I noticed that the output from the compass was not linear and very different if you rotated clockwise or anticlockwise!

After lots of web searching and help from others with this sensor, I have now started to get more sensible output. While this work is not fully complete, it is a big improvement over the standard sample code that is commonly found, so I thought I better start publishing before I loose momentum on this.

Details are on the wiki, and I also updated the SeeedStudio site sample code on their wiki. The main point to note is that it takes some effort to calibrate, but hopefully the sample code provided helps simplify the tasks.

Nov 142011
 

The first attempt to improve access to the computer cables and to eliminate the wiring chaos worked fairly well for the easy access, but not so well on the eliminating chaos. Some valuable lessons were learnt, including to reduce the size of cable bundles and to split the bundles based on cable destination, to reduce the stress on connectors when desk or computer is moved.

This second attempt is a major improvement as it:

  • improves the rear cable management “rack”:
    • rigidity and strength – to support heavy cable bundles and pulling when moving.
    • space to get hands in to adjust wiring.
    • air flow.
    • by adding cable management at rear top of computer.
  • splits cables into three bundles:
      • local to the computer (USB, eSata and power for external disk drives).
      • to the desk.
      • to the wall.
  • included extra slack in the cable bundles.
  • used velcro for quick un/wrapping cable bundles.

Many of the improvements were made through the planning of what bundles go where and then bundling with velcro ties and good slack.  You can make big improvements, without the trolley and rear rack, by planning your cable bundles, adding slack and using easy cable wraps or ties. Also be prepared to have a make improvements or even redo completely, as you discover better ways to run the cables and bundles.

You might even have a computer case with holes or brackets where you can tie or add screws to support cable bundles and eliminate the need for the cable “rack”, although this does work better with smaller cable bundles.

The lessons learnt this time are to:

  • label both ends of each cable
  • have a labelling “standard”.
  • Resist adding ANY extra cables unless well labelled and documented, and even then resist as they add complexity and bundle weight and stiffness!!!
  • plan for change – you will refine and also just change, think about the common things you use and move.

It’s very surprising how often you forget which cable does what a few months later, even you think it is just so obvious when you do the wiring, so at a minimum label “this end” with what the “other end” is connected to – and this needs to be done on each end. If you can write up a table or spreadsheet or have custom software, then that is also very useful.

The outcome – was chaos eliminated?

Both computers now wheel out easily and the desk, which has one computer each end, can also easily be pulled out. A bonus is that this enables quick disconnect of the entire computer – you only have to unplug a couple of easy to find cables.

The real miracle is that the cables have not magically reverted to a horrible rats nest, despite adding and removing several devices and cables and even an overhaul to fix a failed fan.

The outcome is that chaos has at least been deferred long term, the final result is very pleasing !

Nov 062011
 

Over the years I have seen many ideas on the web to help reduce cable chaos and made many of my own attempts to reduce or eliminate. My best attempts have created neat, tidy and largely hidden the cables, but very soon after, if not minutes later I always had add or remove a device or to take wall wart on a trip, or just rearrange, and the immediate wiring chaos that occurs is not desirable at all. Often my attempts were never even completed, as frustration at the bad results, lead to abandoning the attempt.

It also seems that all attempts are for fixed wiring that does not allow you to move the computer to easily get to the rear to make changes. I also am trying to overcome issue of heavy cables pulling on plugs & especially cards in motherboard slots.

First attempt was to add some swivel wheels to a flat board and use cheap power cord wrappers with some added bracing, which also keeps the computer on the trolley.

$2 Power-cord-wrapper  Computer trolley

The result was a definite improvement as the trolley for in/out easy access was great and the power cord holders provide fairly good cable management.

Computer trolley and cablesHowever there were a lot of lessons learnt:

  • plan which cables go into which bundle, for example cables that are entirely local to computer and cables that go from the computer to different destinations.
  • bundling can actually increase cable weight/pull on computer plugs – take care to include slack and support BOTH ends.
  • try hard not to twist cables around each or it becomes very difficult to remove cables.
  • use of cheap plastic bags ties are good, but not as quick to undo and reuse, and not much good for thicker cables/bundles.
  • power cord holders used where OK, but a bit flimsy for larger cable bundles and did not leave enough space to fit my large hands in.
  • had to undo angled brace on one side to open computer case!
  • next time buy a case with wheels.

The biggest issues were not enough room for easy access to change, too many cables bundled together and worst was wrong cables in wrong bundles severely restricted ability to move the trolley in/out for easy access.

However all this did lead to good ideas for improvement, which the next post on this topic will show were really successful.