Psion Series 3a vs. Technics RS-B665

In what’s turning into a real 1990s tech-fest I present to you my “Psion Series 3a remote control for Technics RS-B665 cassette tape deck” …

Psion Series 3a controlling Technics RS-B665 tape deck via serial/NodeMCU/WiFi/Raspberry Pi

Earlier in 2021 I hacked my old 1990s tape deck (which didn’t have any native remote control capability btw) adding some hardware in the deck and a Raspberry Pi (of course) using a Node-Red dashboard to control the basic STOP/PLAY/FF/REW operations via a web browser – for technical details or for a quick video πŸ˜‰ – after recently getting back into Psion ownership I figured I could use a NodeMCU to connect the Series 3a to the tape deck’s Raspberry Pi and achieve the same thing by getting the 3a to send commands over its serial link. The electrical contacts behind the deck’s front panel buttons have tarnished with age meaning they don’t work as reliably as they once did… that’s all the justification I needed to build this πŸ˜„

I’ve written a simple OPL prog that opens the serial port, does some NodeMCU setup then just simply sends “S”, “P”, “F” or “R” for STOP/PLAY/FF/REW using LPRINT to "TTY:A". As usual with these type of projects, most of the work is done in the Pi – I’ve written a simple bash script utilising netcat (as it natively understands the telnet commands that NodeMCU uses to connect) that simply calls the relevant python scripts to toggle the GPIO pins that control the relays. Phew. It’s not rocket science, nothing earth shattering or over complicated but it works!

pi@pistreamer:~ $ cat
echo "Start listening on port 23…"
while read line
  if [[ $line =~ 'S' ]] ; then
    echo "STOP"
    /usr/bin/python /home/pi/RS-B665_control/
  elif [[ $line =~ 'F' ]] ; then
    echo "FF"
    /usr/bin/python /home/pi/RS-B665_control/
  elif [[ $line =~ 'R' ]] ; then
    echo "REW"
    /usr/bin/python /home/pi/RS-B665_control/
  elif [[ $line =~ 'P' ]] ; then
    echo "PLAY"
    /usr/bin/python /home/pi/RS-B665_control/
done < <((echo "Available commands: RPFS") | sudo nc -kltv 23)

Both the NodeMCU and the Psion are powered from the same USB battery (Psion via a USB/9V adaptor). Note my horrid null-modem adapter and RS232/TTL board which doesn’t have any handshaking capability! I’ve ordered a MAX232 breakout board so I can use the same sort of setup to actually get the 3a online via the NodeMCU (although direct connection of 3Link cable to RS232/USB and pppd on the Pi works fine). Lack of handshaking just results in plenty of “serial overrun” warnings 😞

Overall connection is: OPL on Psion 3a --> 3Link --> null modem --> RS232/TTL --> NodeMCU --> WiFi --> Raspberry Pi --> shell script/netcat/python --> Raspberry Pi GPIO --> Relays/resistor network --> Tape Deck

Conclusions: 1. I’ve really missed writing OPL πŸ™‚ 2. In the future I might write OPL for the MC400 to do the same thing, but obviously the Series 3a OPL dialog looks much nicer πŸ™‚

Psion Series 3a, serial 3Link, null modem, RS232/TTL, NodeMCU πŸ˜€

Retrocomputing – getting re-acquainted with the Psion Series 3a and MC400

Back in the 1990s I was a serious Psion addict. I bought the first Series3 as soon as it came out in 1991 and was immediately hooked. Although it was tiny it was the first proper computer I’d owned. The Series 3a was released in 1993 and I upgraded first to a 512k model, then to the 2M model in 1995 – after that I also owned Siena, Series5 and Revo models. But as I look back on those times some 26 years later, for me the 3a 2M was “Peak Psion” – it was just in the sweet spot, somehow it was better than the later models even though they were technically superior (apparently Science Fiction writer Charles Stross agrees) πŸ˜€ Something about the form factor, the depth of functionality of the built-in apps and the expandability that the programming language OPL allows was just right. And it would run for ~40 hours on a couple of AAs! The development of the 16-bit SIBO range effectively stopped as the 32-bit models with EPOC32 were released & took priority – who knows what might have happened if the platform was actively developed?

Reading the history of the development of the MC & Series 3 machines in David Wood‘s excellent book “Smartphones and beyond” gives an insight into the fanatical engineering employed to create such functionality with sparse resources – the Series 3/3a’s processor was 16-bit 8086 based and with only 1M of ROM. Object oriented development, sharing code in libraries and copious use of assembly language all helped to shoehorn an impressive feature list into a tiny space. This endears the Psion to me even more. One of the memorable anecdotes I’ve read is that the entire word processing app in ROM occupies less space than a blank MS Word document.

After recently rediscovering my MC400 software I’d written in 1995 it re-ignited my passion for these Psion machines and after looking on eBay I just couldn’t resist. After 20-odd years without a Psion machine in the house all of a sudden I’m now the owner of 2 – an MC400 Word and a Series 3a 2M.

DTMF (MF4) dialling on a MC400 via OPL πŸ˜€

The MC400 has had a tough life – the previous over had stored (and probably forgotten about) it in his shed and the rechargeable NiCad battery pack had leaked and corroded some of the machine’s internals. No worry – I’ll strip it down and give it some TLC. The machine arrived with the plastic case of the dead NiCad battery in place but someone has hacked out the actual cells. Also there’s a column about half the screen height of a few pixels wide that are dead.

Poor rechargeable battery pack hacked to bits by previous owner

The MC was also bounced around by the courier, not helped by the seller wrapping it in only one layer of the thinest bubble-wrap, and it arrived with several of its keycaps dislodged.

The Series 3a seems to be in reasonable condition – a few of the keys feel like they don’t travel as far as they should, maybe there’s debris under them and the LCD has some slight variation in tone but overall it’s not too bad for a machine that’s 26 years old! I must’ve jinxed it – just after writing the above line the post that sits between the 2 AA batteries has just snapped off… but apart from that so far it’s holding together…

Transferring files via dosbox (on Linux) and mclink.exe

My new series 3a was sold with the 3Link “soap on a rope” serial link and the other half of it (9-pin mini-DIN to 9/25way D-type) also works with the MC.

I’ve got plans to write some OPL to get both of these machines controlling my Technics cassette deck – it’ll be a real 1990s tech-fest πŸ˜€ I’ve got a NodeMCU board set-up to emulate a modem and I’ll be re-writing some of the code on the Raspberry Pi that controls the tape deck to be able to handle the serial output from the Psions…. see here.

Technics RS-B665 cassette deck remote control via OPL and serial cable…
NodeMCU lined up for duty connecting the MC400 to “the internet”

MCMF – MF4 dialling for the Psion MC400

Back in the early 1990s I was a serious Psion-a-holic. If there was such a thing as “Psionaholics Anonymous” I would’ve been there. My first machine was the ground-breaking Series 3 and I was instantly hooked. After that I owned a Series 3a, Siena, Series 5 and later a Revo. These machines had soul.

Psion Series 3a with Nokia 2140 (and Peugeot 205 GTi 1.9 keys) – a 1990s tech-feast!

I was a little too young for the original Psion Organiser (remember the YUPPIEs πŸ˜€ ?) that had introduced the Organiser Programming Language (OPL) – a structured BASIC-like interpreted language that meant owners could add their own programs to extend the functionality of these little handheld machines. The Series3 (and later) models had continued to feature OPL and added graphical capabilities to the language too.

I had missed out on the stereotypical 1980s-computerkid experience (ZX80/Spectrum/BBC Model B etc.) due to having parents that thought such things were a “waste of money” so my little Psion Series 3 was the first programmable real computer I owned (if you don’t count my programmable calculators that is… TI-66 & FX-4000P looking at you πŸ˜‰ ). Over the years I wrote a large number programmes & apps for the Series 3/3a/5, and contributed to other programmers work too. (Including helping to test early versions of the controversial RevTran by Mike Rudin πŸ˜€ )

What a beauty… near-perfect keyboard and AA-battery powered.

I had always lusted after a Psion MC400 – a laptop size portable computer that ran for 60+ hours on a set of 8 AA batteries. The MC range was way ahead of it’s time, featuring a touchpad and beating any windows-compatible laptop machine at the time for longevity-per-charge but obviously restricted in features due to availability of software for the SIBO/EPOC16 operating system, proprietary SSD modules and a hefty price tag. I fell in love with it a first sight, it was an amazing machine.

From “Psion News” Issue 13 Summer 1992 – announcing the availability of Word Processing on the MC400

I finally got hold of a second hand one around 1995, just to satisfy my curiosity. I found one for sale in “Exchange & Mart” and had to drive a few hours from my home in Merseyside over to Lincolnshire to collect it. As the MC’s design dated from well before the EPOC32 days it had already been left behind by later Psion models. One of the many system functions that was lacking (but was a standard feature from Series 3 onwards) was the ability to play (DTMF) MF4 tones from the machine’s built-in speaker to enable the user to dial phone numbers by holding the microphone of a landline or payphone handset close to it. Phreaky!

As I was working in System Engineering for a major UK Telecom equipment vendor at the time I had easy access to the specifications of the MF4 signalling protocol.

I created an OPL program to generate MF4 tones which neatly integrated with the MC-400 system by allowing “bring” (basically single button copy/paste) functionality to get phone numbers from the contacts (or any other) app into the dialler.

Hi-tech holidaying…. accessing the internet via Psion Series 5 and (roaming) Nokia GSM phone. Torch coz no backlight on the Series 5 πŸ™‚

There was a thriving community of Psion users/programmers/enthusiasts on CiX (Compulink Information eXchage – a sort-of UK version Compuserve) where Psion employees would hang out too, and it was advice from here that enabled me to include system functionality into my OPL code. Colly Myers and David Wood – two of the key technical figures in Psion – had provided example code that enabled me to implement the missing “bring” functionality into Psion MC OPL.

And so in 1995 I proudly released my code to the world in MCMF10.ZIP … and then forgot about it. I think it may have been included in 3Lib (Steve Litchfield‘s freeware/shareware pre-Internet distribution service via floppy/CD) but I’m not even sure if more than a few people ever downloaded/looked at/used it. I did receive a couple of emails in 1997 from users referring to MCMF but they were asking me other general questions about availability of software for the MC platform. At the time of writing it’s still online in what looks like a CD collection from 1997. The MC was something of a commercial failure and never sold in any significant numbers (rumours were “less than 1000”), and I released my code well after the machine was on its way to being forgotten.

If you really wanna do some DTMF MF4 dialling on your MC-400 then download away…..

Text-based DTMF digit dialling heaven πŸ™‚

I really really wish I hadn’t sold my MC400 – I would love to have it set up right now, even just as a terminal to talk to other computers with πŸ™‚ I’m glad to see other people are actively keeping old Psions alive, even blogging/tweeting from an MC400!
UPDATE 28-04-2021: I managed to track down a working MC400 on eBay…. it’s just arrived today! Getting re-acquainted wth it….

Psion MC featured in an advert for Psion Dacom “compact” modems πŸ™‚
From “Psion News” Issue 13 Summer 1992

Just in case you were wondering – all this nostalgia was started by the acronym “MCMF” popping up at work, but in this case it was “Multi Constellation Multi Frequency” referring to GNSS receivers πŸ˜€

From “Psion User” Summer 1996 – the nascent www and Psion’s own website

“Electronics & Music Maker” – archiving a demo cassette from 1982

“Electronics & Music Maker” (E&MM) was a magazine aimed at home/hobby music makers that started in the early 1980s and was produced as an offshoot of the mighty Maplin electronic component distribution empire. The idea was that it would promote more sales and engagement with Maplin’s component business through projects & DIY features based around the fledging home audio/electronics/recording/music-production market segment.

As a nerdy electronics hobbyist and budding home-musician I was exactly the target demographic. Well, maybe I was a little too young as I was still at school and limited by (lack of) funds. I remember skipping school meals for a few weeks and saving my “dinner money” to buy a Casio VL-1…

“My first synth”. Or calculator. Or both.

Later as a Uni student I think I cut up most of my E&MM copies to decorate my walls. Pride of place were Cabaret Voltaire & Tears for Fears (sliced up covers from issues Nov ’84 & Jan ’85 respectively).


Whilst chatting with an old colleague he mentioned a tape-cassette given away in the 1990s free with a “Professional Electrician & Installer” publication and this reminded me again of E&MM. The magazine had decided to offer cassette tapes for sale that featured audio clips of some of the instruments, projects & artists featured in the mag. I had purchased “demo cassette 6” in 1982 (again funded by pocket money no doubt) that featured audio from February’s & March’s issues.

Contents pasted onto the inlay card by yours truly

A cursory internet search discovered the mu:zines site – an online archive collection of similar magazines from the same era. They were looking for copies of the old E&MM “Demo Cassettes” to archive and after contacting the site admin I discovered they hadn’t found any yet; I was the first E&MM cassette owner to come forward since the site went live around 2015. Excite!

I hooked up the old Technics RS-B665 and via audacity I soon had an MP3 containing the sounds of 1982’s finest home-electro-musician/home-recording technology πŸ˜€
now available for your total listening pleasure at the mu:zines siteΒ 

Colours added by me. Originally Black & White.

Reviving a relic – a time machine from the past – the Enhanced Waveform Generator

A long time ago I worked for a telecom equipment vendor and one of the significant projects I was involved in was a major upgrade of the frequency source & distribution function within a narrowband PSTN switch. In a recent clearout I found a set of boards (actually “SIUs” (for ‘Slide-in Units’) as they were officially known, probably called “blades” nowadays) and began to think about resurrecting them. They were designed to work as a set of 3, but without an exchange shelf/backplane to fit them in I will need to wire them up by hand… a challenge indeed – there are a lot of inter-plane sync, status & comms signals between them – but I do have copies of all the engineering documentation so it should be quite a straightforward proposition πŸ˜‰

3 x EWFGs in all their glory! Just a test alignment of connector mechanical fit

The upgrade project and the design of these boards was started around 25 years ago, so they contain a mix of technology from the late 1980s & early 1990s. The same functions could be achieved with today’s technology in about 10% of the size/weight/power or even less.

The design of PSTN switches of the time was such that to achieve the “five nines” of availability (i.e. 99.999% of the time) almost all of the hardware functions were duplicated or triplicated over different physical iterations. The philosophy was that a single hardware failure shouldn’t bring down the whole system. The exchange clock signals that this set of boards provided were themselves triplicated so that other hardware subsystems that depended on the clocks could perform a “two out of three” majority decision – a common scheme in electronics to allow a receiver to detect if one of the clocks was not as it should be. 2048kHz clock signals were supplied for the main exchange processor and 500Hz/8kHz clocks were delivered locally within the backplane of the main narrowband switch function.

The functional entity the boards provided was known as a “Waveform Generator” or WFG – the enhanced versions shown here added some improvements in reliability, performance and standards compliance (G.703 interfaces) and so were known as an “Enhanced Waveform Generator” or EWFG.

After powering up each board individually a gentle exploration via the good old debug port shows all the cards are still working yay!

Testing 4th board – locked to external 2048kHz ref – whoop!

Backplane wired… power on…

EWFGs 0 & 1 – WKR & SBY

Testing the inter-plane comms and oscillator status/selection wiring gradually, starting with only 2 out of 3 due to power supply limitiations…

And why not add a Raspberry Pi for good measure? As these 3 boards are without control and status reporting from/to the exchange subsystem processor I’m planning on emulating that with some bit-bashed Pi output (another option would be to add 3 x serial-to-USB converters hooked up to the debug ports) and get some sort of web-based control/status dashboard up & running.

A Life-long Love Affair with “Compact Cassette”

I was saddened to learn of the passing of Lou Ottens, a Dutch Engineer credited with inventing the humble cassette tape format whilst working at Philips in the 1960s. Crucially Philips had the foresight to licence the format and it quickly became the de-facto standard for consumer audio recording. It made me reflect on just how much of a constant companion music on cassette has been throughout a large part of my life.

Bootlegging – recording live gigs in the late 1980s

I still can remember getting my first “cassette recorder” as a birthday or Xmas present as a youngster and being fascinated by the seemingly infinite possibilities of recording sound.

A standard first introduction to cassette tape in the late 1970s…

Music is a huge part of navigating the world as a teenager as we try to work out who we are and where we fit into society and the “compact cassette” (as it was officially known) played a huge part in my formative years. People of a certain age in the UK will no doubt remember with fondness the Sunday evening ritual of “recording the Top 40” – a special time when the FM frequency used by BBC Radio 2 was given over to Radio 1 for a few hours. Countless tape-decks all over the country set to PLAY/RECORD+PAUSE waiting for your favourite tune to be announced and playing the game of cat & mouse with the announcer trying to record just the music without any of the DJs voice at the start or the end of he recording. Happy days indeed.

My first car didn’t really feel right until I installed a radio-cassette player in it – taking those first solo drives after passing my driving test with that feeling of freedom were just as much about the soundtrack as the destination. “Making a tape for the car” was a thing πŸ˜‰ The portability of the format was key: you couldn’t (easily!) play vinyl records when you were on the move but portable tape players (and later the Walkman) meant that you could take you own personal tunes with you wherever you went.


In an increasingly digital world analogue music formats like cassette and vinyl are making a comeback. I recently bought a new turntable and retrieved my old Hi-Fi tape-deck and minidisc deck from storage. There is an undoubted emotional connection that is made with physical media that changes the perception of and engagement with the music – especially when you can see it move as it plays the sound. Something about producing sound from motion is definitely more engaging (for me anyway) than other formats where you can’t see the media move; obviously streaming, as there is no physical media as such but also CD/Minidisc/DCC/DAT etc. where the physical media is usually sucked into the machine on a tray or drawer and the magic happens inside a closed box.

The physical & technical limitations of using magnetic tape inside a plastic housing are well understood but still the analogue-ness of the format fits with our understanding & experience of the physical world as humans.

Curating & recording a mixtape is a special thing, so much more than just “making a playlist” and of course the physical format allows decoration of the tape & its box with yet more personalisation. Handwritten notes on the tape itself and inlay cards add yet more emotional connection. Making mixtapes was more than a necessity it became a hobby in itself πŸ˜€ Mixtapes for the car, for specific journeys, mixtapes for parties and of course mixtapes for the girls I was trying my hardest to impress 😎 LOL.

As a teenager I was in a band with some friends at school – all hail “Aquainted with the Nite” and “Prophase” (band names created in English & Biology lessons respectively πŸ˜€ ) – cassette tape played a large part in recording practices/gigs and making “demo tapes” to send to whoever we could. I even used a couple of standard stereo tape decks (one of them my dad’s old classic Amstrad 7050 tape deck!) to do multi-track recording of original pieces. Electronic music was entering the mainstream and I definitely caught the feeling that consumer electronics like cassette tape decks were helping ordinary people create in their own homes.


I tried myself to make new sounds from radio programmes and the instruments & effects I had available purely by using cassette tape decks, sometimes just randomly pressing pause during spoken passages…

I even wandered around my parents house recording ambient sounds, recording the BT phone ringing, dial tone, announcements with a sense of archival, saving all these sounds for later…

As a nerdy Physics & Electronics student I was somewhat obsessed with audio electronics. My very first cassette recorder didn’t last long before I took it apart to see how it worked. At Uni the first talk I ever gave to my (small) tutor group was about “The Dolby B noise reduction system” and how it worked. Looking back I was also completey obsessed with Maxell tapes and the brand Maxell in general. Imagine my excitement when I received a letter from them on official headed paper… πŸ˜€

As a massive Prince fan I can remember the hype around “The Black Album” (Prince famously changed his mind and persuaded his record company to cancel the album release just a week before it was due at the end of 1987) and being given a bootleg copy on a tape early in 1988 was yet another highlight in my compact cassette journey 😎

In June 1990 a friend and I decided to drive non-stop from Merseyside to the South of France (Sainte-Maxime + FrΓ©jus) in my Mk1 Ford Fiesta 1.3GL πŸ˜€ Because, errrr “Why Not?”… We were in our early 20s and the world was our oyster. Of course, we had to have a mixtape for the journey

“Zut alors!” etc.

And so, as all good things must come to an end, in the 1990s it seemed like newer digital recordable formats like Minidisc or DAT (or even DCC) might kill the analogue compact cassette but even those were quickly superseded by “computer audio” file-formats like MP3/FLAC and recordable/re-writable CD, DVD & SD cards. Streaming services and the now ubiquitous smartphone means that instant access to high-quality entire audio catalogues are the norm…

But…. Compact Cassette – I still ❀ you 😍

“maxell” forever πŸ™‚ – look at the futuristic font πŸ˜‰

Buying 2nd hand “vintage” Hi-Fi on eBay – buyer beware

I recently bought a new pair of active/powered speakers for use in my home office but was disappointed with the sound compared to an old Sony mini Hi-Fi that I have in another room. The SONY DHC-MD373 is a mini Tuner/CD/MD unit with optical & line in (and Tape in/out for the optional TX373 cassette deck) spec’d at something like 25W RMS output into 2-way bass-reflex “bookshelf” size speakers. I bought my original unit some time in 1999/2000 and it has been in use ever since, and it still sounds great!

I started monitoring eBay for 2nd hand units, initially to give to my teenage son who has recently got into records, thinking that although the MD373 has no dedicated phono input an outboard preamp could make use of one of the line or tape inputs.

eBay had a few for sale, mostly “for parts or not working” with issues with the volume control rotary encoder or just “fails to power on” – faulty units with/without speakers selling for Β£10-Β£30. Some of the mint cosmetic condition units with the (optional) tape deck, speakers and remote control were advertised for Β£100 or more.

Eventually I bought a unit for Β£41, fully working but no remote control (no biggy as I have one already from my original system). It arrived, I unpacked it (wiped it down with anti-bacterial/anti-septic wipes!) and took it apart to check for signs of wear or problems. It all checked out OK and with the help of the official Sony service manual I was able to put it into “service mode” and read the error logs and check total play/record times (total record time for the MD is significant as it uses a high-power/high-temperature laser mode to record with only a finite lifetime) – all looked good.

We installed it in my son’s bedroom, with an old hand-me-down JVC belt driven turntable and battery powered outboard preamp into the Sony’s “TAPE” input so now he can listen to his “vinyl” when the mood takes him. For Β£41 the sound is impressively detailed with a solid bass.

I began thinking that maybe I should look for another MD373 unit to replace the active/powered speakers in my home-office. I’d been watching a few eBay auctions and received an offer from a seller who’d advertised a fully working system (with remote) for Β£60 but just reduced it to Β£50. I accepted.

The third system arrived & the excitement of un-boxing another of these Sony units soon faded when I turned it on and tried to operate it… pressing the front panel buttons was something of a lottery as to what would actually happen – pressing “next track” on the CD sometimes switched to the tuner, pressing “CD eject” sometimes started the MD playing… this thing was really ill. I’d found out with my old Technics tape deck that push buttons in old kit like this can tarnish/oxidise with age and a quick look at the schematic in the service manual showed exactly the same mechanism as Technics had used: a series resistor chain grounded at various points by the different buttons to signal to the control processor the intended function. I noticed that all functions worked fine with the remote control so it was definitely the front panel buttons that were at fault. I tried a test record from CD to MD which was a challenge to set up with the buttons but it eventually worked in the end. Trying to eject the MD though was a struggle, the disc started to come out of the slot but was sucked back in as the mechanism and the grinding noise clearly indicated there was something not right. Service mode showed a whole host of historic faults, the usual read errors but also servo/alignment errors too, and a lot more play/record hours than the other 2 units so this little system appeared to have had something of a hard life.

I contacted the seller who had not indicated any problems in the listing and immediately knew I was going to have a nightmare… He tried to explain the malfunctions away with bizarre claims like “that’s what happens when the CD tray is empty” or “maybe the rubber in the buttons has been squashed in transit” and then “that’s what you should expect for a 20yr old system, just use a bluetooth adapter with it and forget about CD & MD”. Hilariously he also sent me a message saying “I’m sure a squirt of WD40 will fix everything”. Muppet.

Rotary encoder ready for some TLC and troublesome push-buttons. No WD40 was used.

The volume control rotary encoder was also showing signs of malfunction, randomly jumping up & down with only the slightest touch. I asked the seller if he would consider a partial refund as the unit was clearly not “fully operational” (as required by eBay for items in the “used” category). He offered me Β£10, and also acknowledged that he knew before he shipped it that “it doesn’t read all CDs and does not work like a new unit”. Knowing that I’d seen other faulty units sell for Β£30 on eBay I told him I thought a Β£20 partial refund would be fair, half expecting him to offer Β£15 (which I would have accepted). He sent me Β£20 instantly with some ranting message about how I was some sort of weirdo expecting 20yr old Hi-Fi to work perfectly. I left him positive feedback as I thought he’d been fair and done the right thing but I mentioned the partial refund and “undisclosed faults” in the feedback. Whoops.


Then the abuse started. He made it quite clear that he didn’t like my “undisclosed faults” comment even though the feedback was positive. I would get a couple of messages a day sending me links to YouTube vids of how to fix a rotary encoder, or more suggestions of what he thought the problem was (“definitely not electrical fault!” was a common theme) all the while banging on about how I was some sort of scam artist for expecting an old Hi-Fi to work “like new” and how I’d selected him purposely to “attack”. I tried to reason with him, pointing out eBay policy for listing used items but that made him worse, the threats then started that if I didn’t send him Β£10 of the partial refund back he would report me to eBay as an “abusive buyer” and leave negative feedback. Oh the LOLs. I told him to go ahead. It was obvious we both had very different expectations and interpretations of eBay rules. I ignored him for a few days but he was relentless. Turns out he did try and open a ticket with eBay but they’d told him he’d sent the refund directly via PayPal, not through the eBay system so there was nothing they could do.

I felt sorry for the guy, so I did send him Β£5 as I would have accepted Β£15 in the first place. I made it clear his acceptance of the Β£5 was conditional on FINAL SETTLEMENT of the whole transaction. Haven’t heard from him since. I filed a complaint with eBay for his abusive & threatening behaviour and put the whole thing down to experience. Rotary encoder fixed and push buttons behaving a little better after some heavy mechanical input πŸ˜€

Turns out the troublesome seller had used his work email for PayPal, which took me to his LinkedIn page and he’s a “Software Consultant” πŸ˜€ Say no more!

Reading a 27C512 EPROM with a Raspberry Pi – ROM-dumping!

Recently I retrieved my Elektor SCMS “copybit killer” from storage and a quick Google search brought up this forum post from just under a year ago – someone was looking to build the project and needed a (binary) image of the ROM contents…

27C512 – 512kbits (64k x 8 bits) of 5V CMOS ROM

Initially I offered to physically send my ROM to someone with a dedicated reader (probably something from the TL866 family that seems to be popular amongst hobbyists) but then decided that seeing as I had breadboard, wires and plenty of small/embedded microcontrollers & Raspberry Pis lying around I really should have a go at reading the ROM myself!

Old Pi Model 2B I’d been using as an LCD Clock – LCD removed ready to read ROM!

How hard could it be? Wire up the address & data buses to GPIO, step through all the addresses 0-65535 and record the data to a file. Easy. (If you ignore level-shifting issues that is πŸ™‚ more about that later… )

Old Pi 2B GPIO to Elektor ROM on breadboard

I discovered this post (which talks about dumping C64 ROMs & also references a previous article) which uses a Raspberry Pi… The Python on the site didn’t work quite right for me, I had to add some debug print statements to work out what was going on and then add some unhexlify from the binascii module to get an actually binary ROM image. There are other ways to do this (properly) but this was the first hack that worked for me, so it stuck. My python to read the chip is available to download below:

Eventually it worked; I had a binary image of the ROM contents. The original Elektor article that refers to the Pascal used to generate the binary ROM contents mentions an output file size of 32768 bytes. My image is all zeros after 0x7FFF so I think it’s all good!

Sanity check – peeking inside the binary image of the ROM

I wasn’t sure of the data integrity as the 27C512 is a 5V part and the Raspberry Pi’s GPIO is all 3V3 (and not 5V tolerant) and I had powered the ROM from 3V3 too. In the python script I’d inserted pauses of 1ms after setting the address/OE/CE before reading the data bus. Looking at the contents of my binary image it looks mostly sensible: it’s easier to judge by eye with this particular ROM due to its function as a finite state machine (FSM), it’s not just “random” binary data (like executable code might appear). There are some anomalies to the repeating patterns though: e.g. 0x7FE8 in the image above and a few other locations I’ve spotted too. I can’t say for definite at the moment if they are corrupt locations or good data.
(UPDATE [2021-02-22]: turns out they’re good data. Very good data. They’re the cool locations that do the magic! Thanks to the very clever people at the SonyInsider forums (well, Kevin Allen especially) – they reverse engineered the state machine function from the ROM contents and the S/PDIF spec… and even wrote some simple C code to generate the binary ROM contents. Truly epic work. I converted the C into python, (not pretty!) so we can at least re-generate the ROM image! Tested & working on Fedora 33, RaspiOS (buster) & MacOS Catalina.)

hexdump – data looks reasonable & uniform…

“Datasheet says NO!” – minimum Vcc is 4.5V – hmmm. To satisfy my curiosity I gave in and purchased a USB EPROM programmer from (the TL866IIplus) and imaged the chip again. Looks like reading the 27C family slowly at 3V3 is viable as the image from the Pi and the USB reader are identical:

$ md5sum elektor_scms_rom.bin
64bd11d7cd3a2ffcde307e94fd8fd679 elektor_scms_rom.bin
$ md5sum TMS27C512@DIP28.BIN
64bd11d7cd3a2ffcde307e94fd8fd679 TMS27C512@DIP28.BIN

TL866II plus GUI on windows – XGpro

There are other ways around reading a 5V part in a 3V3 system – there are numerous level-shifting devices built into modules that can be placed between the ROM’s data outputs and the Pi’s GPIO, or a simple 2k2/3k3 resistor divider on each data line (address lines etc. can be driven directly from 3V3).

Reading this particular device (Texas TMS27C512) with Raspberry Pi GPIO at 3V3, with Vcc=3V3 worked for me. It might not work with other manufacturers’ devices and/or other sizes of device. The original Elektor article sparked my hunt for the source which, via the fascinating work done on reverse-engineering the FSM operation from the S/PDIF spec, ultimately led to the C/Python code that can re-generate the binary ROM image.

code extract – python to re-generate the binary ROM image

Working with these old EPROM components took me right back to when I first started work in the Telecom industry and that was a long time ago πŸ˜€

Minidisc copybit stripper – the Elektor SCMS killer

Minidisc was a promising format when it was introduced in the 1990s but ultimately the convenience of file formats like MP3 that allowed computer (and phone!) playback and unlimited copying sealed minidisc’s fate. The record industry was going through an existential crisis at the time and felt it had to protect itself in any & every way possible against any digital media that allowed unlimited copying. In the minidisc world Sony (as music label owner as well as equipment vendor) had a vested interest in enforcing the standards for controlling how many digital copies consumers could make of their music on minidisc with SCMS (Serial Copy Management System). A digital copy from CD to MD would have the SCMS bits set so that no further digital copies could be made. Professional audio gear didn’t have these restrictions however. The problem with SCMS was its blanket application – it would stop copying regardless of whether copyright was involved or not… users were prohibited from copying their own or non-copyrighted audio.

Elektor, an electronics magazine, published details in 1998 of a kit that had been designed to furtle the SCMS data (actually set copy protection to “unrestricted”) in the S/PDIF digital audio signal on the fly so that all restrictions on further digital copies were removed (actually published earlier in Dec 1997 in German/Dutch issues of the magazine). The so-called “copybit killer”. The design used a novel approach using a handful of widely available standard chips (no specialist audio devices required) and the data matching/stripping was handled by a state-machine realised with shift registers + ROM. It’s a handy piece of kit that also doubles as an optical/electrical format converter. The kit was available from “Stippler Elektronik” in Germany – either fully assembled or as components + PCB.

I purchased the kit of components + PCB in January 2000 from Stippler and assembled it shortly after. I recently found the original order which I had sent over to Germany by Fax πŸ™‚ (back then it was 126DEM, or around 64EUR and with postage it cost me just under 50GBP)

Utilising the anti-static mat properties of vinyl album cover πŸ™‚

There were all sorts of other ways around SCMS for users with consumer-grade equipment – like recording to or from PC via S/PDIF enabled sound card but MD-deck to MD-deck copying at the time was always problematic on consumer-grade machines.

The company that produced the kit, Stippler Elektronik, has since disappeared. Unfortunately the binary contents of the 27C512 EPROM are not available anywhere. The original Elektor article refers to a Pascal programme used to create the binary file but doesn’t offer a listing or any other details apart from saying that “the pre-programmed ROM is available from suppliers”. The design was attributed to “H Hanft” (actually Dipl.-Ing. Hans-Juergen Hanft) – if you’re still around, or indeed if anyone anywhere has another ROM to compare contents with please get in touch πŸ™‚ Maybe Georg Stippler knows? The programmed ROM is known by its part number “EPS 976516-1” and the whole kit is 970069 or E970069
(UPDATE [2021-02-22]: thanks to some very clever people over at the SonyInsider forum we now have C, Python & Tcl code that can re-generate the binary contents of the ROM πŸ˜€ )

Title: Einfacher Copybit-Eliminator: Digitales Kopieren ohne Beschraenkungen
Year of publication: 1997
Publisher: ELEKTUUR B.V.;
ISSN: 0932-5468
Document Type: Article (Journal)
Type of Material: Print
Language: German
DDC: 621.3
Database provider: Technische Informationsbibliothek (TIB)
Database name: TIB-Portal

Technics RS-B665 Cassette Deck Remote Control

UPDATE: 2021-05-06 Tape deck now also controlled via a Psion Series 3a πŸ˜€

One of the small benefits of spending more time at home since the COVID-19 pandemic is having the opportunity to really appreciate music at home, like properly take some time out and listen to a whole album, uninterrupted. Especially analogue stuff – pop a tape in the tape deck or slap a record on the platter…
Pre-COVID my job had me travelling a lot and most of my music consumption had been whilst on the move – Spotify in the car or on the train or possibly listening to downloaded playlists/albums through noise cancelling headphones on a plane…

Like many people my age I have a few old Hi-Fi pieces stashed away in the loft or cellar, things like “music centres”, record decks, cassette decks etc. In the 1990s I had a “proper” Hi-Fi separates system comprising Linn turntable, Creek amp and Technics cassette deck and have never been able to part with it so it sits most of the time in storage, coming out occasionally to impress the kids with tales of what life was like before the internet. (And also to bore them rigid with the “when Dad played bass in a band at school” tape. Yay for “Aquainted with the Nite“!)

Around October 2020 I got the cassette deck out again and this time it was a little ill. Common with all decks of this range & era a small plastic motor drive wheel becomes brittle & cracks with age but thanks to a quick visit to I managed to diagnose & fix the problem. Another issue these Technics decks suffer with is tarnishing/oxidation of the contacts behind the front panel push-buttons used for all the main functions (STOP/PLAY/FF Dolby off/on etc.) and mine was displaying some intermittent symptoms – i.e. I would press “FF” but the deck actually goes into “PLAY”.

Technics RS-B665 in all its glory….

Luckily I found a service manual on the internet for the deck and the push-button front panel part of the schematic can be seen below:

Pin 9 of CP5 is earthed via points in the resistor chain R701/2/3 for STOP/FF/REW/PLAY

A very common mechanism is used in lots of consumer electronics of this type: a resistor chain is grounded at various points to signal to the mechanism control logic what mode is requested. This explains why a tarnished button contact with a higher resistance is interpreted by the logic as a mode further up the chain (e.g. “PLAY” instead of “FF”).
As a long term fan and avid user of the Raspberry Pi ever since its introduction I’m always looking for ways to modernise old equipment and add extra functions using a Pi here and there – what if I could replicate the resistor chain and have a series of relays, RPi GPIO controlled, to remotely control the tape deck from my phone over wifi? I already had a Pi sat next to the Hi-Fi as I had a new turntable with a built-in USB audio output and had used Icecast/Darkice on the Pi to stream the turntable audio around the house. I reckoned I could interface relays/resistors controlled via GPIO to the the existing connector CN5/CP5 with only 2 wires (GND & input) to control the cassette deck. I imagined a web interface to the RPi with buttons on to mimic the tape-deck’s control panel that would ground the resistor chain at the appropriate point to send the correct signal to the control mechanism. The relay only needs to be operated for a fraction of a second to simulate what happens when a user presses the button.

I found some great resources on the internet such as Thomas Stewart’s RasPi control for a reel-to-reel deck. I prototyped two different approaches: a minimalist python-based script and a Node-Red version (both of them inspired by Henry Cheung’s blog). The python script performed both the web server function and controlled the relays directly via GPIO pins, the Node-Red implementation produced a UI with buttons that executed individual python scripts to control the GPIO signals.
I went for a 4-relay module initially to give me STOP/PLAY/FF/REW but there’s no reason why this couldn’t be expanded to add more relays to cover other functions like REC/PAUSE/DolbyB/DolbyC etc. The 4 functions are enough for me right now, occasional listening to old cassettes. Selecting a relay module that’s controlled via I2C would make more sense if I were going for replicating all 16 buttons on the deck’s front panel, but a direct GPIO pin–>relay mapping for now is not too cumbersome for the main 4 functions.
I decided to install the relay module outside the tape-deck so that either a Pi can be used to control the relays or another dedicated piece of passive hardware like a box on a long-ish lead with plain old push button switches….

Time to take a drill & soldering iron to the deck:

I extended pins 8 & 9 of CP5 to a socket on the back panel with screened cable.

Pins 8 + 9 of CP5/CN5 – GND + Input
Back panel with new 4-pin “Remote Control” input πŸ™‚

I used a 4-pin connector and 2-core screened cable in case I wanted to expand the functionality & pick up the other input signal at a later date. You could actually pick up the input signal from CN5 pin 9 on the main PCB, as it’s tracked through one of the soldered wire links (marked with a tiny black sharpie * in the photo) close to Q912, and any GND signal would probably suffice.

The Node-Red flows are about as basic as you can get – I created a button on the dashboard/UI that links to an “exec” block that just runs the relevant Python script that toggles the correct GPIO pin on for 0.3s then off again.

prototyping Node-Red UI layout

Example python code to enter “PLAY” mode – this operates relay #4 for 0.3s via GPIO22 (pin 15 of the Pi 40-way header)

pi@pistreamer:~/RS-B665_control $ cat 
import RPi.GPIO as GPIO
import os
import time
GPIO setup
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, GPIO.HIGH)
GPIO.output(22, GPIO.LOW)

The 4-way relay module I had for testing was a really cheap-and-nasty thing – and it was active low triggered which means I had to switch from using NO contacts to NC for testing. (Amazon reviewers claim the relays only last a few hours!) During testing I had some pretty dodgy wiring – I used a croc clip to pick up 5V from the Pi header – but it worked!

Not a complete schematic – only the relay outputs are shown in full πŸ˜‰

This approach should work with all Technics decks that use the same mechanism – I’m guessing RS-B555, RS-B655, RS-B765 at least, maybe more. If they share the identical “SECTION K OPERATION SWITCH CIRCUIT” as part of their schematic then you’re good to go πŸ™‚
Now the basic functionality is there I’m thinking of adding a bit more intelligence, maybe sensing if the deck is powered on, what mode it’s in: getting some info from the deck back into the Pi…

Raspberry Pi controlled tape deck with obligatory “1980s music is still the best” product placement πŸ˜‰

Some really cool cassette tape hacking right here. If you’ve found any of this useful I’m always ready for a latte πŸ˜‰ @zedstarr