The Bus Pirate is a cheap, simple, Swiss army knife of electronic prototyping, capable of programming FPGAs, and writing to Flash memory. The uISP is possibly the most minimal way of programming Atmel chips over USB, using less than $5 in components. Although the uISP is using a slower chip and bit-banging the USB protocol, it turns out it’s actually faster when operating as a programmer for SPI Flash memories.
Most of [Necromancer]’s work involves flashing routers and the like, and he found the Bus Pirate was far too slow for his liking – he was spending the better part of four minutes to write a 2 MiB SPI Flash. Figuring he couldn’t do much worse, he wrote two firmwares for the uISP to put some data on a Flash chip, one a serial programmer, the other a much more optimized version.
Although the ATMega in the uISP is running at about half the speed as the PIC in the Bus Pirate, [Necromancer] found the optimized firmware takes nearly half the time to write to an 8 MiB Flash chip than the Bus Pirate.
It’s an impressive accomplishment, considering the Bus Pirate has a dedicated USB to serial chip, the uISP is bitbanging its USB connection, and the BP is running with a much faster clock. [Necro] thinks the problem with the Bus Pirate is the fact the bandwidth is capped to 115200 bps, or a maximum throughput of 14 kiB/s. Getting rid of this handicap and optimizing the delay loop makes the cheaper device faster.
No, that’s not a Playstation Vita up there, it’s a “Yinlips YDPG18A” portable game system. [Ian] found that his Yinlips was lacking in the flash memory department, so he fired up his soldering iron. The Yinlips is based on an Allwinner Sunxi series processor, and uses a standard TSOP48 footprint flash. There is some standardization in flash pin out and packages, so [Ian] picked up the largest pin compatible chips he could find – a pair of 256 gigabit (32 gigabyte) chips from Micron. Desoldering the existing flash proved to be a bit of an adventure as the flash was glued down. [Ian] also didn’t have his hot air gun handy, making things even more interesting. Careful work with a razor blade broke the glue bond.
It turns out that the soldering was the easy part. All flash chips have geometry, die count, page size, block count, sector size, etc. The geometry is similar to the geometry in a hard drive. In fact, just like in modern hard drives, a system will read some basic information before accessing the full storage array. In the case of NAND flash, the processor can access the first page of memory, and query the flash for its part number. Once the part number is known, the geometry can be determined via a lookup table. [Ian] checked the NAND table on github, so he knew going in that his flash chips were not supported. Due to the complexities of booting Allwinner processors into Linux or Android, the table and the NAND driver that uses it exist in several places. The bootloader’s axf file, U-Boot, and several flash application binaries sent from the PC based LiveSuit flash app all required modification. Most of these files were packed into a single flash image. [Ian] used imgrepacker to unpack the image, then opened the hex files. The fact that he knew what the original flash parameter tables looked like was key. He searched for an existing Micron flash table entry, and replaced the parameters with those of his new chips.
With all the files modified, [Ian] re-packed his flash image and sent it over. The Yinlips rewarded his hard work by continually resetting in a bootloop. [Ian] wasn’t going to give up though. He wired into the boot console, and discovered that a CRC check failure on one of his modified files was causing the reset. He then disassembled binary issuing the reset. Changing the return value of the CRC to always pass fixed the issue. [Ian’s] now has a collagen infused Yinlips with 58GB of internal storage. Pretty good for a device that only started with 2GB.
[Petri]’s first computer was the venerable Commodore VIC-20, predecessor to the Commodore 64. With only 5kB of RAM, a very simple graphics chip, and BASIC, it’s a bare-bones system that’s perfect for a 7-year-old future programmer. [Petri] was trying to figure out something to do with this old computer, and realized the simple schematic would allow him to recreate those classic VIC-20 cartridges using modern hardware.
This project began by cracking open a few game cartridges to see what was inside. They’re very simple devices, consisting of a decoupling cap and a ROM chip wired directly to the data and address busses. [Petri] desoldered the ROM and replaced it with a ribbon cable that would give him a clean breadboard to VIC-20 expansion port interface.
Instead of finding a contemporary EEPROM chip to program, [Petri] decided on using a Flash chip. The original cartridge had a 16kB ROM chip, but the smallest parallel Flash chip he could find was 256k. No problem, then; just ignore a few address lines and everything worked out great.
After getting the VIC-20 reading the breadboarded Flash chip, [Petri] started work on a circuit that would program his Flash chip while still attached to the expansion port. With a few buffer chips and an ATMega32a loaded up with Arduino, he’s able to program the Flash chip and turn it over to the VIC-20.
A simple test that toggled the color of the screen as quickly as possible was all that was needed to test the new circuit. Now, [Petri] can finally start on programming some games for his first love.
Continue reading “Flash Game Cartridge For The VIC-20”
[Toby] has an Elinchrom EL-Skyport, which is a wireless flash trigger. He decided to see if he could trigger it using an Arduino, and came up with a nice proof of concept. This little device was not meant to be user serviceable, as can be seen in what [Toby] uncovered while taking it apart. But once he had it disassembled, he cataloged everything inside, and then he awesomely went to the trouble of drawing up a schematic. With that knowledge, he began reverse engineering the SPI protocol used, which almost deserves an article by itself.
It was a long road to get there, but in the end [Toby] built a prototype Arduino shield that houses an nRF24L01+ module. These are very cheap to pick up on eBay. He gives us the details on hooking up the module, though he had to go through extra hoops since he was using the Arduino Leonardo. Still, once you’re up and running, you can make use of one of the existing libraries specifically for this module.
Thanks to his effort, the rest of us have one more device to hack on. Thanks [Toby]!
Continue reading “Elinchrom EL-Skyport Triggered by Arduino”
Over the last few years, [Tobias] has repaired a number of USB Flash drives. This strikes us as a little odd, given small capacity Flash drives are effectively free in the form of conference handouts and swag, but we’re guessing [Tobias] has had a few too many friends lose their thesis to a broken Flash drive.
In all his repairs, [Tobias] found one thing in common The crystal responsible for communicating with the USB controller is always broken. In a way, this makes a lot of sense; everything else on a Flash drive is silicon encased in an epoxy package, where the crystal is a somewhat fragile piece of quartz. Breaking even a small part of this crystal will drastically change the frequency it resonates at making the USB controller throw a fit.
[Tobias]’ solution for all his Flash drive repairs is to desolder and change out the crystal, bringing the drive back to life. Some of the USB Flash drives even have multiple pads for different crystal packages, making it easy to kludge together a solution should you need to repair a Flash drive five minutes ago.
In reaction to the other air gap flash unit we featured a few days ago, [Eirik] sent us a tip about another one he recently made. In his setup, the duration of the flash peak intensity is around 300ns (1/3,333,333 of a second). As a reminder, an air flash unit consists of a circuit charging a high voltage capacitor, a circuit triggering a discharge on demand, a high voltage capacitor and the air flash tube itself. The flash tube contains two wires which are separated just enough to not spark over at max potential. Isolated from the other two, a third wire is placed in the tube. This wire is connected to a trigger/pulse transformer, which will ionize the gap between the two capacitor leads. This causes the gap to breakdown and a spark to form, thereby creating a flash of light.
[Eirik] constructed his flash tube using an olive jar and a glass test tube. As you can see from the (very nice) picture above, the spark travels along the glass test tube, making the quenching much faster than in an open air spark. [Eirik] built his own high voltage capacitor, using seven rolled capacitors of roughly 2nF each made with duct-tape, tin foil and overhead transparencies. For ‘safety’ they are stored in a PP-pipe. A look at the schematics and overall circuit shown on the website reveals how skilled [Eirik] is, making us think that this is more a nice creation than a hack.
Disclaimer: As with the previous airgap flash, high voltages are used here, so don’t do this at home.
Here’s a completely non-invasive hack for a classic Minolta SLR camera. [Robby] wanted to add to the options available when it comes to remote shutter release. He ended up building a cable release add-on that mounts on the hot shoe.
He drew some of his inspiration from a similar project we saw back in March. He took the engineering example from that project which uses a small servo motor to actuate the cable release. But along the way added his own features.
The system centers around an ATtiny4313 microcontroller. It provides feedback using the character LCD on the back of the auxiliary flash body. That flash body also offers a battery compartment which provides power for the control circuitry as well as the servo motor. Right now it functions as a count-down timer, and also can hold the shutter a specified amount of time. But we could see this extended to work with external sensors to trigger at a set light level, when sensing motion, or from a remote control.