Intel Edison: USB Storage Sled

I’ve been spending the last year or so playing with the Intel Arduino products – Namely the Intel Galileo and the Intel Edison. One of my projects the last few months has been Making a LinuxFromScratch Linux Kernel with full build tools, Xwindows, and QEMU running WinXP SP3. Included in this build is a XWindows software FrameBuffer w/ VNC capability; that way I can run a networked gui and do some GUI type work.

Chrome x86 running on Edison under XWindows
Chrome x86 running on Edison under XWindows

The Edison is cool because it’s just powerful enough to run WinXP under QEMU without any software emulation. While I wouldn’t call the Edision a speed demon – it should be good enough to allow printer drivers to function. The onboard storage for the Edison isn’t really big enough to run WinXP from the eMMC flash; so I opted to run a SSD attached to the USB2.0 port of the Edison. Edison runs as the “master”. The end goal of providing “always on” scanner and printer driver capabilities for my old HP all-in-one color laser and the ULS-25E laser cutter.

Windows XP SP3 running on Intel Edison
Windows XP SP3 running on Intel Edison

I also wanted to run a rotational drive .. to act as a swap space for both Linux and for the Winblows PageTable. To do this; I built a Microdrive FLEX to 44pin 2.5″ IDE adapter board and attached it to the Edison via a usb->ATA adapter. I verified all of this works with a usb hub.

With the concept proven; I set about generating a Intel Edison USB Storage Sled. This PCB provides power to the Edision and then connects up a 4port USB hub. This hub then serves the USB->SATA->mPCIe->Intel SSD, a USB->PATA->flexIDE Microdrive, and an extra device port. I set about putting the Sled in a SparkFun Edison Block compatible form factor early in the design phase. Clearly this much stuff on one board prevents me from adhering to the tiny formfactor; so I grew it in the X direction to 4.5″ wide and about 2.1″ tall. This board provides all the power to run the SSD and PATA interfaces. The board is 4 layers; due to USB2.0 routing requirements / impedance matching.

Why the Sparkfun Edison Block formfactor? Well simply put; I wanted to be able to expand the “system” with more features I don’t forsee at the moment. Example: I do not currently need an SDIO card on my Sled – honestly; I’m lazy and don’t want to route the pins. But; if later I need it – I can just buy Sparkfun’s Block and add it to the system.

I’m requesting comments / suggestions / peer reviews for the design; as a result I’m posting it here. The first 3pages of schematics are Licensed to you as Derivative works of Intel and Sparkfun. The last 3 pages and the PCB Layout are currently ALL RIGHTS RESERVED Copyright 2015 by John Zitterkopf. ATM; I’m thinking I’d release the final design under a TAPR/NCL license… but I haven’t committed to that yet.
Prototype Schematics / PCB Layout

In addition to the features above; I’ve designed in some USB Muxes to aid switching the Edison into Device or Host mode (similar to the Intel Edison Arduino board). I’ve also included the Lipo Battery charging circuit to provide a limited UPS type capability to the design incase of small power outages due to lightning or what not. Lastly; I added an I2C eeprom which can be programmed by the Edison for the USB to SATA bridge chip.

Update 8/28/2015:

Here are some pictures of the finished prototype:
Secondary/Edison Side

Primary/mSATA side

Feel free to leave a comment here (which will be reviewed by a human prior to posting) or provide comments in the various threads / project logs below:

Bally (AS-2518) Audio Card tester

For the past week or so; I’ve been working on the Audio solution for the Star Trek: Mirror Universe project. I’ve decided I want to combine a Raspberry Pi with the guts of a Bally AS-2518-32 soundcard. These cards are not yet rare; but the PROMs and the 4bit counter on them are rare. As a result; I’m going to be trying my luck with the first Complex Programmable Logic Device (CPLD) project I’ve ever embarked on. More on that later tho.

Given I’ve designed a replacement sound card out of new components; I wanted the ability to test the card outside of the machine… because I don’t want to risk burning up a perfectly good Bally CPU board with a risky design.

I spent quiet a bit of time looking at the schematics of the AS-2518 Bally sound cards to understand it’s functionality so it can be duplicated. The result is that I decided to design simple micro-controller-based tester which would sequence my new design thru all 32 tones generated by the on-board logic.  Since I already had a Arduino Nano (purchased from FRYs) for the Pinball Nixie Display project – I re-purposed it for the Pinball Audio Tester.

I began by rewiring the cables for the Audio board as follows:

J1
(Audio)

Arduino
Nano (PAD)

Color

Cable

NAME
(AUDIO)

12

D2

Orange

1

SOL_E

11

 

 

 

<KEY>

10

 

 

 

 

9

 

 

 

 

8

D8

Yellow

2

sol_bus_sel

7

 

 

 

NC

6

GND

Bare

2

BARE(GND)

5

+5V

Red

2

+5v

4

D11

purple

2

SOL_D

3

D12

brown

2

SOL_C

2

D13

grey

2

SOL_B

1

D7

blk

2

SOL_A

I’ve decided to share the Source code so that other Pinball hackers can take advantage of my work. You can download the source code from here:

PinAudioTester.ino Rev 0.1

The source is simple and should be easy to understand – please consider sharing any improvements you decide to make.

To power the Arduino and the soundcard; I created a 4pin Power cable which plugs into my debug ATX powersupply with color-coded aligator clips. I attach the Red (+5V) to the TP1 test point, Yellow (+12V) to the ?TP3? testpoint, and Ground (Black) to the TP2 testpoint. The design does not currently test the 43V to 12V linear supply as ATX doesn’t output that high of a voltage.

I’ve tested the source on my original AS-2518-32 sound card and it outputs 30 tones and two silences as implemented in the pROM. I now await the new soundcard PCBs from OSHPark to do some final testing.