SparkFun Dumpster Dive 2020 Unboxing and Breakdown

Every few months SparkFun does what they call a “Dumpster Dive”. In the course of doing business they amass a collection of excess electronics, ranging from “one-off items, to items that are a little broken or ugly, to items that aren’t worth individually listing and selling.” Rather than recycling these still-useful electronics, they decided to put together little 1 lb. grab-bag boxes to sell.

And I decided to buy one.

(more…)

Flashing the BIOS to Fix a “Bricked” Lenovo Laptop

A few months ago I was attempting to reformat my laptop as a dual-boot machine with both Ubuntu and Windows 10 and I was having issues getting the boot manager to properly detect both operating systems. Shortly after changing a setting in the BIOS related to SATA operation, the laptop suddenly stopped working after rebooting. Powering it on resulted only in a pure black screen where after approximately fifteen seconds it flashed “Lenovo Misto Ontario”, and then nothing. It was true and thoroughly “bricked”.

I tried everything I knew to fix it, including pulling the CMOS battery, reformatting the hard drive, and trying to ‘auto-flash’ the BIOS from a USB drive – nothing worked. I’ve had this little Lenovo S205 netbook for a few years and although it’s gotten slower it’s always served me well.  And since it was working perfectly fine up until it er, wasn’t… it seemed like a waste to just throw it out without trying my best to fix it.

I’m happy to say that I succeeded. The solution was to reflash the BIOS chip with a replacement BIOS I found online, using an open source program called ‘flashrom’ and an Arduino acting as an SPI flash programmer. Here’s how I fixed it.

(more…)

Understanding the Xbox 360 Wired Controller’s USB Data

One of my recent projects has been trying to modify some microcontrollers to function as XInput devices, emulating an Xbox controller. The first step in this process is to fetch and then break down the device’s “USB descriptors”. These descriptors are a hierarchy of standardized reports that describe features of the device including who makes it, what version of USB it supports, how it’s powered, and more. By copying the Xbox controller’s descriptors onto my own device, I can convince the computer that my device is also an Xbox controller and will behave like one, and therefore use the Xbox controller’s driver to easily interface with games.

But rather than just copying and pasting the descriptor from one place to another, I want to try and understand exactly what’s going on behind the scenes. I want to understand how the information in these descriptors translates into features of the device’s behavior.

(more…)

FastLED vs Adafruit_NeoPixel for RGBW LEDs

Multicolor LED strips generally come in two flavors – solid color and addressable.  Solid color strips, as the name implies, have all of their LEDs display the same color.  Addressable strips on the other hand allow you to control the color value of every individual LED in the strip.  The most popular individually-addressable LEDs on the market at the moment are Adafruit Industries’ NeoPixels, based on the WS2182 chipset.  They come in a variety of physical packages including strips, rings, and matrices.

(more…)