A USB On-The-Go File Server

The idea

I haven’t checked to see if anything like this already exists, but I want to jot down some ideas on the subject. Even if it does exist already, it probably isn’t open source and it would be fun to design and build this.

I have a clunky Western Digital MyBook that I have lying around, that I don’t use because it’s annoying to lug out. However I have my music library on there, so occasionally I need it. It requires a wall wart adapter and a USB cable which make it very irritating to hook up. I’ve wanted to create a Linux file server for quite a while so I can just leave it on, but the computer I have is very large.

Current Specs (still planning):

  • PIC32MX695F512H

    • Programming Spec – Sounds like you can program this with 2 wire interface – clock and data line; entire spec is here. Should be simple to do; may be able to just use an arduino to generate the programming signal (with level conversion of course)

  • DP83848C External PHY

  • External Crystal 20MHz Citizen

Some preliminary requirements:

  • Cheap
  • Small footprint
  • Should be low power
  • Optionally operate from same supply as the disk drive (maybe an adapter board can leech some power out of the wall wart).
  • PIC32MX695F512H (64pin) / PIC32MX695F512H(100pin) Datasheet

  • 100T Ethernet (100 Mbit/s)
  • USB OTG Full Speed (12 Mbit/s)
    • Obviously this will be a bottleneck, but if I choose 10 mbit/s for ethernet then that will lower total speed

Programming PIC32

I don’t think PIC32MX695F512H is supported by PicKit2

PicKit2 Updates stopped (microchip forum)
Forum: Device File Editor – open source tool to program new devices with pickit2?

EJTAG via OpenOCD (microchip forum)
PIC32MX Flash Programming Specification
OpenOCD Project
OpenOCD Home Page

Some Microchip PIC32s support both Ethernet and USB OTG. PIC 32 Parametric Table. I already have a PICKit2, and I think it programs PIC 32s.


Some questions I’ll need to answer before designing this.

Haven’t worked with Ethernet before. Is this jack with built in magnetics enough to get ethernet working? Or is there some circuitry I haven’t deal with before? I’m anticipating some external capacitors and resistors, but I mean beyond that.

Does the PICKit2 program PIC32s? Is the MPLAB IDE enough or is there additional software required?

Can the PIC32 operate at 100 base T or is it 10 only?

If 100, does this require special microstrip transmission lines? May be challenging if so.

What about USB On The Go? Speed? Transmission lines?

If it does work at slow speed, will it be usable?

Is future 802.11x possible/feasable/too expensive?

Additional ideas

Maybe this same concept/board could also be used as a USB OTG print server as well. Would be better as an 802.11x device for that.


transfer-speeds.gifImage from here