Printing from computers goes through waves of being difficult to being easy, then back to difficult again. This is likely due to the cycles of technology, complexity and user demand flow in and out of sync. I think we’re at peak annoyance right now.
It’s even harder with Raspberry Pis, as when printer drivers support Linux, 90% of them are for x86 or x86_64 computers only (Canon: ಠ_ಠ). ARM doesn’t get a look in. But one technology does actually seem to help: network printers that support IPP — Internet Printing Protocol.
We had an old Brother laser printer that just got slower and crankier and less useful as a printer, so yesterday I got a new Brother DCP-L2550DW to replace it. It says it supports Linux in the spec, but I knew not to be too optimistic with my Raspberry Pis. And indeed, it was seen on the network but no driver was found. I had a sad.
What turned my frown upside down was finding out about Raspbian’s cups-ipp-utils package. For desktop use, install it this way:
(leave off system-config-printer if you’re running from the terminal.)
On the desktop, open up Preferences → Print Settings and add a new printer. Yes, it prompts for your user password which you may have forgotten. I’ll wait while you try to remember it …
Now under Network Printers, you should see a device you recognize. Pick the one that says IPP network printer somewhere:
Here’s where the magic happens: you actually want to pick the generic driver for once:
And again, the IPP utilities package will have picked the right driver for you:
Changing the name and location is optional:
Hit Apply, and you should be printing!
(Hey, printer manufacturers have been known to be evil and make good, working stuff suddenly not work. IPP is supposed to make everything sparkly again, but I can’t guarantee that something wicked won’t come this way.)
Update: After a few months of using the Brother DCP-L2550DW, I don’t recommend you buy it. It’s a perfectly capable printer, but it takes ‘chipped’ toner cartridges that:
stop dead when you hit their page count limit, wasting toner and preventing you from finishing the print job;
can’t easily be refilled by local technicians, so are wasteful of resources.
Getting the backing paper off laser cut acrylic is a pain. Some people recommend d-limonene, a citrus-derived solvent that is the main active ingredient of Goo Gone.
Pour a little Goo Gone into a tough freezer baggie, and place your acrylic part inside. Seal it up, and lay it flat for a few minutes. After that, flip it over and let the other side soak for a few. Open the bag and fish out your work. The backing paper should just slough off. Now rinse off the acrylic with washing-up liquid/dish detergent and warm water, taking care not to scrape the surface. You should now have a perfectly clean and shiny acrylic object. The d-limonene has the pleasant side-effect of de-stinkifying the cut plastic, too.
You should be able to re-use the Goo Gone baggie many times if you’re careful. You might not be able to rinse Goo Gone down the drain where you are; please check local regulations.
I’d previously got a proper power supply (9 V DC, ≥ 1.4 A, centre negative) and bypassed the PAL UHF modulator to give composite video. No television, monitor or converter box that I had tried seemed to give a useful display.
Back in May, Walter Miraglia brought a tiny 7″ composite colour monitor to TPUG‘s Retrocomputing Night. He let me try it with the Spectrum, and it worked very well. Walter said it was an extension monitor for a car DVD player.
a 9–12 V DC power supply able to give ≥ 1 A. I use a regulated supply that gives 9.1 V open circuit and is rated at 2 A. Note that the power connector is slightly smaller than the common 2.1 mm barrel, so you may have to order this one, unless you can solder something up.
A cable like this 3.5mm Stereo to Composite Video + Audio Cable (3 RCA). These are sometimes just called camcorder cables. They use a 3½ mm TRRS jack, and can also — if you don’t mind not quite having the connectors in the right order — work with the composite/audio output of more recent Raspberry Pis. Tech Source had these for under $5.
Connect it up , and — success! Well, slightly qualified success. The screens do not have the greatest resolution, so pixels are slightly smeared together. The screens do have a decently fast refresh, and the whole look is just right. With its colour clash and dot crawl, nobody ever expected great video from the Speccy anyway.
Here are some screen shots taken with my phone, and a couple of pixel-sharp screenshots from Fuse to compare:
So I can now definitely view the screens. Huge thanks to Walter for tipping me off to these DVD players.
[Incidentally, the screens are designed for car use, so don’t stand up properly unless you get creative with some supports. I laser-cut these out of 3 mm plywood:
Glue the little sticks on to the flat ends, and they’ll fit into the slots in the back of the monitor. Here are the feet with the sticks fitted:
There are better-designed feet than these, but they work, mostly.]
I was still having game loading problems. Try as I might, I couldn’t get anything to load reliably. Retrocomputing Stack Exchange came to the rescue, in the shape of mcleod_ideafix’s very helpful answer. If your audio player is running from batteries and you can use a stereo cable, you can convert the normal mono loading audio into stereo with one channel inverted. This gives you effectively double the volume, and works quite well with my audio player, an old Edirol R-1*.
This audio will not load into an emulator, or work with a mono cable. Some audio players even render it as silence.
Here’s a script to take monophonic loading data and convert it to this faux-differential stereo format using Sox:
If you want to check your audio levels, sox can also create the 800 Hz header tone used by the Spectrum. Run the output of the command below through the script above, load it onto your audio player and fiddle with the volume until the border flickers steadily:
I was also looking for the games to load fairly quickly. Tapes used to take over three minutes to load, and while retrogaming all is about the experience, I haven’t got time for that. Fuse has some utility programs which will convert a .Z80 game snapshot into an audio file that loads in about 1¼ minutes.
To convert the snapshot to a speed-load TZX tape image:
snap2tzx -o game.tzx -s 3 game.z80
To convert that virtual tape image into audio:
tape2wav -r 16000 game.tzx game.wav
You can then run that WAV file through the stereo/differential script I listed above. Have fun!
I’d tried making several Raspberry Pi Zero enclosures, but none of them quite worked. My needs are pretty simple, but I do need to be able to fit a full 40 pin strain-relieved (possibly keyed) header into the device while keeping questing fingers and dropped conductors off the circuit board.
Conserves material: The Coo~Coo uses just under 80 × 80 mm of 3 mm ply or acrylic, plus four nylon machine screws, nuts and washers.
Takes a full-sized GPIO header with a little headroom.
Provides edge protection for the µSD and connectors.
Has only a single cut layer, with no time-wasting engraved rasters.
Needs only simple tools to make: really only needs diagonal cutters to snip off half of the nylon screw heads. Needle-nose pliers might help too, as there are some fiddly small parts.
Free as in CC0. Yup, since this is derived from the Raspberry Pi Foundation’s copyrighted drawing, my modifications didn’t really add anything of value. Thus I waive all copyright and related or neighbouring rights on my additions:
To the extent possible under law, Stewart C. Russell has waived all copyright and related or neighbouring rights to the “Coo~Coo” Raspberry Pi Zero Case. This work is published from: Canada.
Why the odd “Coo~Coo” name? Well, look at the pattern of spacer washers and half-spacer washers:
To save material, I arranged these washers inside the GPIO cutout. I realised that I could spell COO~COO. It’s even clearer on the cutting document:
Update: here’s a revised path that cut well with acrylic and probably will work slightly better on plywood, too: coo-coo-rpi_zero-acryl.zip
(If you do use acrylic, let me introduce you to one of the marvels of backing-paper removal: d-limonene. This fruity solvent — present in products like Goo Gone — causes backing paper to slough off with only a few minutes’ soaking. It washes off to a clean shine with water and dish soap/washing up liquid. I have just saved you fingernails from certain damage!)
The cutting path in the PDF could use a little clean up if you want to try this design in acrylic. The base of the design has been flipped so that any laser flare will be hidden inside the case.
You’ll need four M2.5 or M3 nylon screws of 20 mm length, plus 8 washers and 4 nuts. M3 screws of this length are easier to get, but the mounting holes in the Raspberry Pi Zero are only 2¾ mm in diameter. You can thin the M3 screws down slightly by lightly twisting them inside a piece of folded fine sandpaper. You’ll still have to push them through the Raspberry Pi Zero circuit board with a little force, though.
Cutting & Assembly Instructions
If you have it, place some fine wire mesh or sacrificial heavy card-stock between the laser cutter honeycomb bed and the plywood. The spacer washers are just the right size to fall through the cutter bed and be lost inside the discard hopper.
Cut the piece as normal.
Remove the work from the laser cutter. Masking tape applied over the washers will stop them falling out.
Take the top piece, and thread the other two screws through the holes by the HDMI and PWR labels.
(It may be easier to do these one at a time)
Place two of the full spacer washers over each screw.
Push the screws through the Raspberry Pi Zero board. M2.5 screws won’t need any force, but M3 will need some coaxing, possibly even cajoling.
Place a nylon washer on each of the two screws under the Raspberry Pi Zero board.
Take the base and flip it horizontally so the screw holes match the top.
Very loosely attach the nuts to each of the screws.
(You’ll need the slack to fit the top two screws and their C-shaped spacers)
Feed the top two screws through the half-holes by the GPIO cutout in the case and the Raspberry Pi Zero board. Again, coaxing and/or cajoling may be required if you used M3 ones.
Put nylon washers over the screws between the Raspberry Pi Zero board and the base.
Very loosely attach the nuts to the top two screws.
(This is the fiddly bit) Stack two of the half spacers and put them on each screw. You need to get the screws tight enough to just grip the spacers against the case, but not too much or you won’t be able to align them to let the GPIO connector fit in the gap. Tightening the screws at the HDMI and PWR ports can help with this, too.
Nip off half of the heads from two of the nylon screws. This will allow the GPIO connector to fit easily.
Tighten all the screws (finger tight is fine) and make sure the trimmed heads align with the edge of the GPIO cutout.
The new Raspberry Pi Zero with camera connector should also fit, but I don’t have one to test it.