Mjolnir - the Portable Media Computer




I travel a lot and I like to take my media with me. However, I'm rarely end up at places with a strong internet connection and I don't like having to hook up my laptop to the TV. So a couple months ago I decided to build a portable media computer, and as a result, Mjölnir was born.

Mjölnir (so named because it looked like Thor's hammer before I painted it), is essentially a Raspberry Pi, a powered USB hub, and a portable HDD tucked inside an electronic enclosure.

The Raspberry Pi is great, especially when it's tucked away behind a monitor. However, it isn't perfect as a something to carry around with in your travels. To make it as small as possible the connections are all on different sides of the board. Plus, once you've found them all, you have to hook up the pi to a hub, the the hub back to the pi to power it, and then your portable HDD into the hub, then plug in power to the hub, HDMI into the pi, and ethernet. . . . on and on. And a crow's nest of wires does not look very good.

Mjölnir was born out of a need for simplicity. I wanted it to be just like a tiny computer, all the ports at the back, just plug things in and go.

If you follow these instructions you too can have a portable media computer for around $215.


Wow, the feedback and response to this has been incredible. Thank you to everyone that has viewed it and commented. I'm glad the majority of you like it. After recieving some feedback I'll try to clarify some points I failed to make in my instructable:

  • Orientation - The removeable plate is actually the bottom. I attached bits of Sugru to that for feet, and after I closed the lid I flipped it over and that's the bottom. Showing pictures of the internal configuration made it confusing, because when you see inside the case with the panel removed, you're actually looking at it upside down.
  • WiFi - Originally i had one of the ports on the USB hub for a WiFi Dongle; however that thick aluminum blocks all WiFi. I don't need WiFi (like I said I use this mostly in places where there isn't internet); but if you' need one I'd recommend buying another USB panel connector and mounting it just above the first one. There should be an open port since I have my fan plugged into the Pi directly.
  • Fan & Temp - Yes, that is a 12V fan, and yes USB only puts out 5V. It doesn't run at full speed (or even half speed), but it moves enough air for the little heat my HDD makes and it's super quiet. I watched many hours of full 1080p content over the weekend and the Pi's CPU never got above 54C.
  • The OS - I'm running RaspBMC (http://www.raspbmc.com/) which is a custom Linux kernel based on Rasbian which in turn is based on Debian Wheezy. Once installed it boots directly into XBMC which is all you can use. This was a big plus for me, because this makes it very user friendly for my friends. If you're looking for a full fledged computer with a browser, games, etc. this probably isn't for you.
    • The Pi will also support OpenElec (XBMC) and RasPlex (Plex) as OSes.
  • Control - So one of the reasons I choose the Pi is because it supports CEC over HDMI. This means that MOST newer TV's can control the pi using their factory remote. This was a big plus for me, because this makes it very user friendly for my friends.
  • Cost - Yes, as mentioned at $215 you're almost into NUC territory. However, remember that includes 2TB of storage, memory , and remote control (through CEC). Additionally, I, like so many of us, already had a Pi, an external HDD, Sugru, many of these cables lying around. So the cost ended up only being less than $100. I included the TOTAL cost for someone wanting to start from scratch. Just so they know what they'll be getting into.

Step 1: Gather Your Parts

There are a lot of parts that go into Mjölnir. Here's the list:

Step 2: Create Your Cables & Reset Switch

You need to make 3 custom cables for Mjölnir, and they will all come from that random USB cable you found.

USB to Fan

The USB to Fan cable is very easy.

  1. Cut the cable about 4 inches from the USB plug.
  2. Remove about 1/2 an inch of the outside rubber.
  3. Pull back the metal sheeth and insulation and remove it.
  4. Clip back all the inside wires except the red and black ones.
  5. Take the fan wires and the USB cable and match red to red and black to black.
  6. Solder or twist together and cover in tape.
Power Cable

You need something to go from the panel adapter to the USB hub. What I ended up using was a couple more inches off the USB cable you just chopped up. Here is the panel adapter that you'll be using. Basically, we're making a coupling from the outside of the case to the USB hub. The two pieces match the female and male plugs of the hub perfectly.

  1. Cut the cable about 4-6 inches long.
  2. Remove 1/2 inch of the outside rubber from both sides of the cable.
  3. Pull back the metal shet and insulation and remove it.
  4. Clip back all the inside wires except the red and black ones.
  5. Using your voltmeter work out which connector goes to the barrel and which connector goes to the pin.
  6. Solder the wires and cover in tape.


I couldn't use the little plastic cover on the male part that goes into the hub inside the case. It just didn't fit, so I went without and covered it in a little sugru.

I also would recommend either putting in some connectors into your power cable or waiting until the end to put it in and finish the connector because the male piece will not fit through hole you drill for the female piece that attaches to the panel.

Reset Switch

The reset switch is a bit of a two-parter.

First you need to solder the headers onto Pi, then you create the cable/switch for the panel.

I followed instructions from RasPi.TV that Lifehacker had found last year.

I didn't end up using a panel mounted switch and a custom wire for my reset switch because I had this switch left over from a previous project.

Step 3: Drill Some Holes

Panel Holes

You will need holes for the power adapter, HDMI plug, Ethernet, USB, & reset switch.

  1. Fit all the components into the box and take measurements of where your panel holes need to be cut on the inside of your case.
  2. Using your measurements put your cables on a piece of paper and trace where they should be.
  3. Cut out the holes of the paper and transfer the layout to the outside of the case.
  4. Using a dremel or rotary tool cut out the holes & then drill out the screw holes.
Vent Holes

I drew up a pattern for drilling that would fit my 40mmX40mm fan nicely. I put one vent on the front left (looking at the case and assuming the panel connections would be rear) and one on the rear right side to get as much cross ventilation as possible. I used a Rigid drill bit that was recommended to me at Home Depot for metal drilling and it made it through all the holes. Almost 200!

To be honest having a drill press to do this would have been nice. My holes aren't exactly in straight lines. . . but it's not terrible.

I printed off my pattern and taped it to the case where I wanted it then simply drilled through the paper, as shown in the photo.

Step 4: Paint, Putty, & Install

Paint the case whatever color you want and while it's drying install your choice of XBMC on your SD Card.

After the paint has dried attach the fan to one of the vents (the front one fit best for me). I had no desire to use bolts so I stuck it to the vent with a bit of Sugru in each corner.

Then, since my reset switch wasn't designed for panel use, I attached it to it's proper hole using Sugru as well.

I added 3 pieces of Sugru to the bottom of the Pi so it doesn't rest on it's pins.

Finally, I put 4 pieces of Sugru on the bottom of case to act as little rubbery feet.

All in all I used two mini packs (5g each) of Sugru.

Step 5: Assemble & Enjoy

  1. Plug in your SD Card and all your wires into the Pi & Hub.
  2. Attach the Ethernet, HDMI, and USB panel connectors with the screws that came with them.
  3. Put your HDD on top and close up the case.
  4. Plug in your HDMI & Ethernet, set your TV to the right input, and plug in your power to watch the magic happen.
  5. Enjoy!



  • Barbeque Challenge

    Barbeque Challenge
  • Sew Tough Challenge

    Sew Tough Challenge
  • Backyard Contest

    Backyard Contest

60 Discussions


5 years ago

Have you considered using flat/ribbon wire to really minimize the profile? Not that it's that big to begin with. But it might save you from using the right angle connectors etc.

1 reply

The bending of cables was the biggest space waster. I think ribbon wires are a great idea, but cost & getting them to mount easy into the panel was the problem.

I think the next version I'll look into putting together all the connections into one plate. . . and having the whole thing mount into the box; then using thinner ribbon cables for connections to that.


5 years ago on Introduction

I had to diagram this (it's my OCD way of thinking out projects). Take a look and see (http://i.imgur.com/X1C0feu.png) if anything in it is wrong.

3 replies

I have the same question - the hub will work for RP power AND for HD data/wifi dongle? Something about it looping into itself like that seems like it would disrupt the space/time continuum

You would think so, but somehow it doesn't.

The hub has it's own power supply, and a data connection that goes directly to the pi's usb. Then I use a micro USB cable going from one of the Hub's ports to the power connection on the Pi.

I've used this method for almost a year now. It works great!

Pretty dang close. I have my USB panel connector plugged into the 4th USB port on the HUB. Just incase I plug a WiFi adapter or something that might draw too much power from the pi.

The Pi's second USB port is powering my fan.


5 years ago

This is awsome


5 years ago

Consider securing the hdd to the bottom, and putting the pi on top, for the sake of heat dissipation. Thumbs up anyway :)

6 replies

Reply 5 years ago on Introduction

Well, when you flip it over that's how everything sits. Because the way the thing is shapped and the screw holes on the bottom; I made that plate that comes off the bottom so everything from the assembly stages is flipped upside down. Sorry, that was pretty unclear in the instructions.

I would like to better mounting solutions for both the pi and the HDD so they're not just kinda in limbo in there. The stiff cables really keep everything from moving; but having dedicated standoffs for the pi and something for the HDD would make me feel better.

Have you thought about dissecting the external HDD, and just using the innards? If you did that, you could use the mountpoints on the internal HDD inside to mount it to the case.

I did think about that. For my next one I really want to just buy a 2.5'' bare drive, I'm just not certain how well USB to SATA works.

Pretty much every external drive on the market uses a USB to SATA bridge, so it's a very solid technology. Just don't go too cheap and you should be fine.

Some of the ones I've seen require a power source. . . is that just for big ole 3.5'' ones? Do the 2.5'' ones not need a power source for USB to SATA?


5 years ago on Step 5

Alright! All my parts have come in - hopefully I'll get a chance to build this weekend! One more question for you - what voltage/amperage worked for you to power it all so I can find an adequate transformer?

2 replies

I honestly have no idea what Volts or Amps that Powered HUB is pushing. I didn't use any transformers. I utilized that USB Hub's exsisting power supply, and just powered the Pi from it.


5 years ago on Introduction


I think that I'll build a variant of your project. The main differences will be that (1) I need the RCA composite video connection to be available and (2) I need it in a plastic case so that the WiFi module can work.

Why composite video? Both our cars have flip-down screens and dvd players, but they also will accept RCA composite video inputs. On a long trip, the kids can have the entire family video library available without having to mess with physical dvds.

Why plastic? So that the WiFi will work. I will need to be able to control XBMC via a remote control app (Yatse) on a phone/tablet so the Mjölnir has to be able to join the car's WiFi environment. As soon as I can find the right plastic case, I'm off and running. In your searching, did you come across any plastic cases that would have worked?

BTW... what size (amps) power supply are you using to run yours?

1 reply

For RCA I just searched "RCA Panel Mount" and found this https://www.futurlec.com/RCA-ChassIns.shtml Match that with a short RCA cable and you could make that work. There's room for it.

You could definitely find a plastic case about the same size doing a little bit of googleing. Something like polycase.com might have what you're looking for. If you wanted the ruggedness of the metal you could simply plug your WiFi dongle into the exterior USB port on the current plan. If you needed to you could run a second USB panel mount.

As far as the amps of the power supply I'm not sure. I'd have to manually check the output of that hub's USB ports to see what they're pushing. Whatever it is; my pi runs very stable even with having a fan hooked up to it and using a preconfigured overclocked profile.

Hope this helps.


5 years ago on Introduction

Why did you use RasBMC instead of OpenElec? I'm considering building something like this, but I'm a little unclear about the differences and advantages of each.