Docker, Raspberry Pi, an e-ink display: All the hallmarks of an awesome DIY project.

Share this story

The e-ink LEGO Macintosh Classic, in all its glory. Oddly, it's hard to grok the sense of scale here. It's about 10cm across and 12cm high. It's pretty small.

Jannis Hermanns

Jannis Hermanns

Backside.

Jannis Hermanns

Close up.

Jannis Hermanns

Top side.

Jannis Hermanns

Jannis Hermanns

Long story short: I built a Wi-Fi enabled LEGO Macintosh Classic running Docker on a Raspberry Pi Zero with an e‑paper display. Docker deployments via resin.io. Read on for more details of how I built it.

But why?

While my son and I were playing with LEGO, after building a 1987 GMC Vandura and an off-road Segway I suddenly had the urge to build one of the first computers I remember using:

I am not a 100% sure if it was this exact model or perhaps even the Macintosh 128K from 1988, but I guess it doesn't really matter. All I did with that computer was play Shufflepuck Café. If you, too, are one of the elderly, be warned that the following video and audio will give you the feels:

But anyways, this post isn't about Shufflepuck nostalgia, it's about taking things too far while playing with LEGO with your kid.

Fitting prototype

I went ahead and ordered a 2.7-inch e-paper display from Embedded Artists. It arrived after a couple of days and I immediately started building a little fitting prototype in LEGO to see what dimensions the Macintosh would have in order to fit that display. Let me tell you one thing... it didn't look good:

But it looked so good in my mind! Well, the coloured bricks don't help—they should be in a uniform grey. So I looked for an alternative way to prototype LEGO and found...

Lego Digital Designer

You can download LEGO Digital Designer (LDD for short) for free from ldd.lego.com. It's a very basic 3D LEGO editor that does the job. So I took the measurements from the catastrophe that is the coloured prototype above and rebuilt it in LDD:

It looks slightly better in grey, but one thing became apparent: with a screen this small, the border left and right of the screen can't be 3 LEGO blocks wide. That's just too much compared to the size of the display. The problem is: the display's board is quite a bit bigger than the display itself:

The overlap on the right side of the display is quite small, but on the left side more than 10mm of board needs to be hidden inside the case of the LEGO Macintosh. I could only think of one solution: Get a Dremel and cut into the LEGO to make it fit with a border of only 2 bricks. Should be simple enough.

So I fired up LDD again and made a couple of variations of different sizes, but all with a display frame of exactly two bricks:

Ordering the bricks

Unfortunately, you can't order pieces right out of LDD. But it lets you print a list of pieces which, I thought, is good enough. When trying to order them one by one I realised that not all bricks that you can use in the LDD are actually available in all colours online. Since this project was a birthday gift for a buddy of mine, I didn't have the time to do more research and ordered the blocks in white right off lego.com.

Shipping took around a week. Here's the exact parts needed for two Macintoshs (yes, knolling, I know, but you can't have kids and knoll—it's one or the other):

Note how on the left side there's almost no plastic left. Putting the rest together was straight forward. Now all I had to do was connect the e-paper display to the Raspberry Pi Zero and off weeeeee go!

Not sure if you were unaware, or if you pointed a camera at your screen on purpose for effect, but macOS has basic screen recording built into the OS. Launch QuickTime Player.app and select "New Screen Recording" from the File menu.

Getting the desired proportions can be tough given the limitation of Lego size increments. You nailed it!

Lego Digital Designer (LDD) is great. However LEGO announced last year that they would no longer support it. They backtracked a little in that it seems they just won't add new parts.

There is another tool I started using called LDCad ( http://www.melkert.net/LDCad ). It is a bit more complex than LDD, but worth it if you plan to do a lot of modeling. It also includes lots of non-Lego parts.

As far as ordering pieces, there are two large re-seller hubs (like Ebay of Legos) called brinklink.com and brickowl.com. Both allow you to upload your LDD or LDCad files into a "Wanted List" or "Wishlist", respectively. Then you just pick your vendors based on ratings, availability, etc..

I don't know if I could ever have the strength of heart to take a Dremel to a Lego brick.

Yeah, brick modification is generally frowned upon by the LEGO community, but I'll admit that I've done it too, albeit very sparingly. Also, If anyone, including the author, is interested, Bricklink is an alternative LEGO marketplace with tons of bricks not available directly through LEGO Pick-A-Brick.

I'm a simple man, I see a headline with "e-ink" in it, I click on it. Why isn't this technology used more?

It's in most e-readers.

I'd be fascinated to know more about the economics of the matter myself(I've always been amazed, and annoyed, how quickly the price seems to shoot up once you dip below whatever the current 'low end monitor/TV' tech is; unless you want a super-retro 7-segment display and nothing else; but I don't know much about exactly what the prices are, especially once you get past quantity one, or why); but I know that one issue is relatively complex and fiddly driver circuitry compared to small character or bitmapped B/W LCDs.

If you want a reasonably fast response; and a full 'black' or 'white' rather than a shade of grey, electrophoretic displays need up to 15v applied to change state. Obviously doable, DC-DC converters are good these days; but for a low cost device that's a nontrivial chunk of extra BoM compared to a LCD driver(backlights for color LCDs can be a pain in the ass, requiring either an inverter for CCFLs or a definitely-not-just-a-naive-current-limiting-resistor for LED; but for reflective LCDs, or 'just one LED on the edge, nobody is going to be trying to calibrate this puppy' backlighting, that's not relevant).

I'd love to see more cheap e-ink around(asset tags that can be updated in software; but still read when the device is off, anyone?); but apparently it's rather more annoying than low end LCDs; which can often do as well or better as long as you don't need to run with zero power.

So, the screen module in question is 74mm wide. Lego bricks have an 8mm width/pitch (distance between center of knobs). Obviously, if you made it 9 bricks wide, you would have 72mm with .8mm of maximum tolerance play in either direction. This should be more than sufficient to accommodate the screen without much, if any, play. for the advanced builder, you could use technic blocks to create side mounting and then use standard 1.4mm thick tiles on the side to create an ultra thin side. The viewing area is 57.3mm in width. This is 7 bricks plus a 1.4mm tile wide (obviously with .1mm extra there). The difference between the module and viewing area is 2 bricks. So, you could have a little screen overlap on either side (.65mm), a 2 brick bezel and a 1 tile wall.

the screen is not centered horizontally in the module. It appears that there is approximately one brick (8mm) less on the right side and 1 brick (8mm) more on the left side. this can be accommodated fairly easily though. Dremel is the bad way to go.

If you were looking for an off-white brick, that would be something you could probably find many of the pieces you wanted on bricklink or brickowl (I have used bricklink extensively but not brickowl). there are also other ways to deal with the problem where the core of the system is built using any available color and you side lug mount proper colored tiles to it to cover things. This is done a lot in models and is 100% viable.

Remember when the challenge of Lego was trying to build something reasonable out of the limited selection of bricks they offered?

Now that you can do practically anything with them, it's somewhat less compelling.

Still, they're an interesting modeling exercise. Though I'm not surprised by anything people do with them anymore.

To me this is like saying "They sell so many different kinds of wood these days that a guy making a bike out of wood isn't that impressive." There's plenty of creativity and ingenuity needed to make something special even if you have a wide selection of raw materials.

C'mon people, this is obligatory here! I can't believe it took to this long to have it posted! :-P

Excuse me, are you from the past?

See, the driver hooks a function by patching the system call table, so it's not safe to unload it unless another thread's about to jump in there and do its stuff, and you don't want to end up in the middle of invalid memory!