I thought I’d share this for people in a similar situation to me – very occasionally needing to refer to a specific wheel position on a locomotive. Strangely this information isn’t easy to come by online.
Number 1 wheel is usually marked by an arrow above it on the vehicle body. It can be difficult to spot if you’re not certain. If the vehicle is a driving vehicle in a Multiple Unit or other vehicle with only one cab, No. 1 end is going to be the cab end.
Sometimes working out which is No. 1 end on an intermediate vehicle can be a pain, so it’s best to refer to drawings if possible, or the arrow indicating wheel 1.
This is so much an issue, that I have received multiple answers from different people. If someone has a definitive answer (for example by reference to a British or Railway Group Standard), please, please, please, message me via my contact form.
Note – this page previously showed wheel 1 on the other side of the diagrams, but I have since seen a photo of an EMT Class 43 with the wheel 1 identifier as shown above. After quite a while searching, this is the only designated wheel I found, so I have updated the diagrams to match.
The Tanzania and Tanzania II logic boards were designed by Apple and mainly used by clone makers in machines such as Motorola’s StarMax series of computers. Apple released their own budget “clone” style computer in the form of the Power Macintosh 4400 (the 7220 in some markets).
My Power Macintosh 4400/200
Tanzania based machines came in a verity of configurations with various speeds and a mixture of 603 and 604 family CPUs. What is interesting though is that Motorola variants have the PLL strap settings detailed on the silkscreen! The PLL strap options are what sets the multiplier for the CPU clock speed.
Silkscreen CPU Speed Table (thankyou to the unknown source, friend of a friend of a friend)
Note that the speeds shown in the “Mode” column are from a 40MHz bus machine. If you have a Tanzania II with a 50MHz bus, scale all of those speeds by multiplying them by 1.25 to get the equivalent speed for a 50MHz bus computer.
The numbers correspond to the pin numbers on the 12 pin header labelled “CPU Option” in the corner of the board closest to the CPU. By default the header is unpopulated and the clock speed is set by four pull up / pull down resistors on four of eight available positions around the header.
CPU Option Header Showing Default Resistors for 200MHz (Click to View)
The pin numbering can be see around the footprint, and then populating R24 and not R23 is the equivalent of jumpering pins 1+2, while populating R23 and not R24 is equivalent to jumpering pins 2+3. This pattern repeats for pins 4 to 6 with resistors R21 & R22, 7 to 9 with R8 & R9, and lastly 10 to 12 with R1 & R2.
Each set of three pins can be thought of as a toggle switch, for example if you jumper 1+2 together you get one setting, and if you jumper 2+3 together, you get the other.
The resistors set the default and should be removed before jumpering or bridging the corresponding appropriate pairs in the 12 pin header (especially in the case of 51 ohm resistors). Never bridge all three pins in a set of three within the header or you will cause a short and possibly cause damage. Ideally, fit a pin header and use jumpers to change settings. You could even wire in a single pole double throw switch to each set of pins.
Target Speeds
Generally, I’ve found that most processors in various computers (but not all) overclock happily by 20% (I’m not specifically talking about Tanzania based computers, but vintage computers in general). Higher speeds might be achievable, but this is my personal rule of thumb for a ‘more likely than not’ stable overclock. This means that if you have a 160MHz machine, you can likely achieve the 180MHz setting. If you have a 200MHz machine, 240MHz is likely possible.
I haven’t worked out what the best way might be to do it, but given the CPU heatsink on the PM4400 is a little small, some additional cooling may be beneficial – either a larger heatsink similar to the one used on higher end Tanzania based clones, or a fan pointed at the CPU and powered from a spare molex (my PM4400 has several spare molex connectors, but you could always use a ‘Y’ splitter).
If your 160MHz can cope with 200MHz, a simple upgrade would be to remove resistor R1, and then bridge pins 10+11 on the CPU Option header, perhaps with a blob of solder. Removing the bridge and refitting the resistor would set it back to 160MHz.
Changing Resistors
The following table shows what resistors to put where to set the speed of your Tanzania. You should never fit more than four resistors, but if you misplace one of the resistors, they look to be 0603 size, 4.7 kilo-ohm and 51 ohm resistors.
Resistor Settings for Various Speeds
Fitting a Header
If you instead choose to fit a pin header and use jumpers to set the speed, you will first need to remove the resistors and then the existing solder from the footprint. To remove the resistors, I put a large blob of solder on the tip of my iron and used it to heat both sides of the resistor at once and brush them off the pads one at a time. To clear the solder filled through holes, I’d recommend using flux and solder wick (aka solder braid). I’d set my soldering iron to about 350°C, paint on some liquid flux, wick out some solder while not keeping the iron on a pin hole for more than about eight seconds at once, and always lift the iron and wick off at the same time to avoid the wick sticking and potentially causing damage.
If the solder doesn’t clear, try again from the other side. If it still doesn’t, add a little fresh solder and try again.
That is the tricky bit. Once cleared, solder in a 6×2 2.54mm pitch header, or two 6×1 headers.
Jumper Settings for Various Speeds
The following representations show how jumpers should be fitted for a few common speeds.
Note that the difference between 160MHz and 200MHz is only a single change, which is why, as mentioned previously, if you remove resistor R1 and then bridge pins 10 and 11 (for example with a blob of solder), your machine will be speed bumped to 200MHz from 160MHz, as long as it is able to run at 200MHz (the increase is 25%, which in general terms is quite a big speed increase for an overclock, especially without extra cooling).
Results
I removed the four resistors and cleared out the solder from the holes.
Then I soldered in a header, and fitted some green jumpers in the arrangement required for 240MHz. Reassembled my computer and powered it on.
It booted happily and Apple System Profiler (in Mac OS 8.6) reports the CPU as a 240MHz 603ev, which is what was expected.
I ran some CPU benchmarks with the computer set to 240MHz and 200MHz (in that order, by powering down and swapping the jumpers around – I’d forgotten to get the “before” benchmarks) with Norton System Info from Norton Utilities 6 and got an 11% increase in the overall CPU score from the 20% overclock.
Looking at the detailed breakdown, we can see that tests that heavily use the RAM scored less well, with very RAM intensive tests seeing almost no change, moderately RAM intensive tests showing intermediate improvements and things like multiply and divide showing the full 20% uplift.
(Click to View)
I checked through the other benchmark categories (Video, Disk and FPU), Video saw almost no change, likely because most actions are been undertaken by the built in ATI mach64 video chip, with the exception of Ovals and drawing images, which I assume are both dependant on the CPU. Disk saw no significant change (except for random write, which I don’t fully believe and so am going to assume was due to a hiccup during the 200MHz benchmark).
FPU scales almost exactly with clock speed as usual, so we basically see a 20% uplift across the board.
In my specific machine, the CPU heatsink is cool enough to comfortable touch (indefinitely) while overclocked to 240MHz, even with the stock heatsink. Interestingly at 200MHz the heatsink is actually cool to touch, it cant be much different in temperature to my hand. I feel like with a bigger heatsink this computer would have a lot of overclocking potential, although I’m already at the maximum speed in the table.
Upgrading to a 604e
The board is technically able to use either a 603e (/ 603ev) or a 604e BGA chip. To do this, you would have to at least adjust the CPU core voltage by changing components in the voltage regulation circuit near the speaker connector. You almost certainly would also have to change some other resistors on the board as this is usually the case. Unfortunately as I don’t have the schematics, I don’t know what or where these would be.
It may be possible to meticulously compare a 604 based board with a 603 board to document the differences, but I don’t envy the individual that does that. A good place to start is probably at the “CPU ID” header, which also seems to be surrounded by four strap resistors.
CPU ID Header
If I remember correctly, the Performa 6400 schematics are available, and this is a sort of similar machine in some ways, so probably contains some clues regarding changes needed to fit a 604 to a machine that shipped with a 603. The Beige G3 schematics might also help as the design includes allowances for the 603 and 604.
Bus Speed
I’ve not done any investigation, but glancing at the board, it looks like the chips “U10” and “U11” are clock sources. The “U10” style of clock is usually set to one of several speeds based on resistors on some of the pins, but given its location, it might be controlling something in the chipset as “U11” has a 40MHz clock and is closer to the CPU. U11 looks like a shift register – I’m not sure what the circuit is doing exactly. I’d have to look into it, but hopefully these comments are a helpful starting point for someone else.
An old 68kmla post with a dead link mentions a need to move a resistor from R29 to R28 (next to the VRAM slot). But I don’t know anything about that. Well, it actually says the reverse, but mine is already like that, so I’m assuming they got it backwards, or perhaps my machine is already set like that. Sadly the website they’re referencing didn’t get archived by the wayback machine.
As a quick review of the performance of different branches of the PPC family, based on CPU performance scores in the Norton System Info benchmark…
If you compare a 601 (6100/66), a 603ev (4400/200) (603 (6200/75)), a 604e (9500/200) and a 750 (upgraded 9500 with 400MHz G3), all normalised (scaled) to the same speed (in MHz), each with an L2 cache, they scale as follows…
These are all scores using my own hardware. For reasons I don’t understand, the built in scores in Norton don’t match very closely – their 604e in particular does better than mine by a lot. Using their scores, the difference is as follows…
The built in score machines were a 6100/60, 6400/180, a StarMax 3000/160, a 5400/120, a 9600/200 and Beige G3. The difference in performance between the 6400 and Starmax may be a result of L2 cache, but seems absurdly large. Somehow the 120MHz 5400 almost matches a 601 based machine.
Note that the exact scores vary differently between the families depending on compiler optimisation. I’ve previously noticed that the 603 family in particular seems to benefit when compared to the 601 with later compilers. Additionally, as mentioned, there is inexplicable differences between some scores that Norton saw, and what I get with my own machines.
This said, overall, the performance per-MHz is 603<601<604<750.
Note that bus speeds aren’t consistent between the various machines, which will give machines such as the 9600 an advantage in RAM access.
Or, how to bump your Centris 650, Quadra 650 or Quadra 800 to 40 MHz with minimal effort.
A 40 MHz Quadra 650 (“Current System”)
Traditionally, the way we have overclocked the Wombat family of Macs (the 650s and the 800) is to desolder the CPU clock “G3” and replace it with a faster part, or alternatively, use a commercial product that “clips” onto the clock, disables it, and injects its own clock signal. Through a mixture of experimentation and, let’s be honest, the sudden availability of the schematics, I made the most awesome discovery, I’ve found that 40 MHz is easy without messing with the clock. This is great news, because…
The clock is a surface mount part, meaning if you want to swap between speeds, you need to make a socket / adapter.
The clock is right up hard against a NuBus slot meaning you have to be very careful when desoldering and soldering in the area.
It actually turns out that the logic board in these machines has a built in function that lets you select the clock source, either from G3, or a clock derived from the NuBus clock. Selecting the NuBus clock as a source just straight up runs your computer’s bus at 40MHz without having to do any particularly fiddly mods.
There are a number of “levels” of effort you can put in, each with different advantages and disadvantages. You can either just hard set your computer to 40MHz and overclock in terms of the timings (because the ROM still runs with 25 or 33MHz timings), change the timings to the correct ones for 40MHz by swapping resistors, or by adding an extra resistor and two jumper headings, make it that by just removing or fitting two jumpers, you can select (independently) the RAM/ROM/VRAM timings and the CPU clock speed (between either 20 and 25 MHz, or between 33 and 40 MHz).
Basic 40 MHz Overclock
This is the simplest overclock with the minimal effort.
Advantages – This is effectively an overclock, so you’ll get super fast video performance as well as fast RAM and ROM.
Disadvantages – This uses whatever timings you already have, so almost certainly be unstable if you have a machine that shipped as 25 MHz, and possibly unstable if you have a 33 MHz machine.
How to do the Basic 40 MHz Overclock…
Remove the logic board from your computer and place it on a heat-proof and static safe surface suitable for soldering.
Find the pair of pads next to the CPU called “J29” on the silkscreen.
Bridge the two pads, either with a blob of solder, or a little length of wire soldered between them. Alternatively, fit a two pin male header (2.54mm pitch) for a jumper.
Reassemble your computer and test to see that everything works.
J29 on the Schematic
The modification works because U71 is wired to select between two clock sources depending on if J29 is fitted or not. As shipped, J29 is always open, ClkSel is always “high” and so the clock signal (half the bus speed) is always taken from G3. If you short J29, ClkSel goes low and the chip switches to using C20M – a 20MHz clock used by things like the SCSI and EtherNet chip, sourced from the NuBus circuit. Whichever clock is selected is doubled by the MC88916 chip before being fed into the CPU. Don’t worry that R235 isn’t fitted – it isn’t needed.
The Location of J29
I recommend leaving a CPU in the socket while soldering to protect the socket from slips. In the photo above I’ve used solder wick / braid and flux to remove the solder that was in the through holes. You only need to do this if you want to fit a jumper (so you can select between the stock speed and 40 MHz by removing and fitting a jumper. The following shows my setup.
J29 with a Header and Jumper Fitted
If you don’t already have a CPU heatsink, consider fitting one.
Adding 40 MHz Timings
This is a more stable solution that requires a little more soldering. This mod is required if your computer originally shipped as a 25 MHz machine.
Advantages – This reduces the overclock on systems such as RAM, ROM and VRAM, likely making the system more stable at 40 MHz. Doing this change will make a 25 MHz machine work at 40 MHz.
Disadvantages – Benchmarks will score a bit lower than using 33 MHz timings at 40 MHz (in line with a real 40MHz machine if Apple had ever released one). The machine ID (gestalt) will change to an unreleased Mac – 7.6.1 will boot OK (but might not install without tricking the installer), but 7.1 won’t boot unless you can find a hacked System Enabler. (Update – I believe I’ve managed to make the required changes and have the magic System Enabler working now. Drop me a message and I’ll send you a copy).
How to select 40MHz timings…
Remove the logic board from the case and place it somewhere suitable to do some soldering.
If there is a resistor fitted to R152, remove it.
If there is a resistor fitted to R151, remove it.
Save any resistors in case you want to put them back.
Reassemble your computer and test to see that everything works.
Setting 40 MHz Timings
The way I remove 0805 surface mount resistors is by putting a little flux on them, and then placing the iron on one end for about 3 seconds, before quickly moving the iron to the other pad and pushing the resistor off. Sometimes it takes a couple of tries, but it is easier than faffing with other methods and I usually already have my iron set up. It is especially helpful if there is plastic parts nearby on the board that hot air might damage.
The Ideal Setup
This last modification is closest (see the “Other Tweaks” section) to how I have my system configured as it gives the best flexibility. It lets you have jumpers to select CPU speed and timings. Removing both jumpers gives you the stock CPU speed (whatever it is on your machine), with (always) 33 MHz timings, while fitting both jumpers gives you 40 MHz and 40 MHz timings. You can also mix and match.
Advantages – Flexibility – you can change the CPU clock between stock (hopefully 33 MHz) and 40 MHz, and also the timings between 33 MHz and 40 MHz settings. All without even removing the logic board from the case (once the modification has been done).
Disadvantages – If you have a machine fitted with the original 12.5MHz clock for 25MHz, it will be slower than as shipped when you pick 25MHz by jumpers, because you will only be able to select timings designed for higher clocks.
If you have a 25MHz machine, I recommend just doing the first two mods above and basically hard wiring it to 40MHz. Make sure you have a heatsink fitted and consider finding a 33MHz grade CPU.
Dual Jumpers
To fit dual jumpers…
Remove the logic board to somewhere you can do soldering.
Make sure no resistor is fitted at location R151.
Fit a 1.2k 0805 resistor (usually labelled 122) at location R152.
Fit a 330 ohm 0805 resistor (usually labelled 331) at location R233.
Fit a header at location J28.
Fit a header at location J29 if you didn’t previously.
Reassemble your computer and test to see that everything works.
J28 in Situ – This Selects 40MHz Timings when Fitted
R151, R152 (I didn’t have a 1.2k Resistor so used a 1.5k) and R233
At this point, as described above and if you started with a 33MHz board, you will be able to select 33 MHz with 33 MHz timings by removing both jumpers (I store them by placing them so they are on only one pin of the header), or 40 MHz with 40 MHz timings by fitting both jumpers. If you fit J29 and not J28, you will get a 40 MHz bus / CPU speed, with 33 MHz timings. This is an overclock with regards to the timings, so you will have boosted video, RAM and ROM performance. Most noticeable in the video benchmarks like the following :
Video Benchmark Score at 40 MHz with 33 MHz Timings
Note that while 40 MHz timings are selected, you will have the machine ID (gestalt) of an unreleased Mac, and System 7.1 won’t boot as mentioned above. If you want to boot in 7.1, just remove jumper J28.
Other Tweaks
Fit a 40 MHz Grade CPU and a heatsink.
Fit a socket for trying other clock speeds.
Fit a 25MHz clock to aim for 50 MHz.
Spoof a Quadra 800 power LED by shorting the appropriate two pins on the LED connector location. This makes your computer think it is a Quadra 800, which shipped with faster RAM, so I believe the ROM sets up slightly faster RAM timings.
Install the Wish I Were control panel to override the machine ID gestalt and reduce (but not completely) the number of issues from running a machine with an unreleased ID.
Replace the MC88916DW55 with an MC88916DW80 as this makes 50 MHz more likely in combination with a faster clock at G3. Fitting J29 still selects 40MHz, but removing it selects the faster clock at G3. Remember G3 is half the bus speed.
Remove onboard RAM and fit a single stick of very fast RAM (50ns EDO).
Fit a PowerPC Upgrade Card. Some will run at 80 MHz using the modifications described on this page.
I have personally done all the mods listed above to my machine, although I can’t promise they’ll all work for you, or are worthwhile.
Further Research
I worked out how to modify the System Enabler so that 40MHz works with System 7.1! Drop me a message if you want a copy. I might have previously posted it on Tinker Different – I forget.
Additionally, if your board shipped from factory with J28 and or J29 fitted, and especially R233 fitted, I’d be interested to hear from you. It’s likely that such a board would be a prototype and it would be great to check some component values.
This page is making a record of information I originally posted on 68kmla.
Some G3 and G4 processor upgrades for beige macs from the 90s have dip switches for setting the processor and bus speed, as well as a special switch for when you install it in a PowerBase (a clone). With so much information falling off the internet and getting harder to find, I thought I’d post the settings for some cards here.
PowerLogix PowerForce G3 Speed Settings
This is what my PowerLogix card looks like, it is a 400MHz, 1MB Cache G3 (PFG3 400/200/1) upgrade for PCI macs with the processor slot, for example things like the 7500 to the 9600, and some clones.
Here are the settings :
XLR8 Mach Speed Settings
The following settings apply to a number of XLR8 cards, including Mach branded cards. The first 8 switches seem to control the host bus speed, the remainder set the CPU multiplier.
You can also additionally set the Backside Cache speed using XLR8s software.
Newer Technology MaxPowr
See the following site for experimental research regarding the four switches on the non-ZIF variant, or the manual extract for settings on the ZIF card.
Installing “Unsupported” Software on an Overclocked LC 475
(Or more generally, installing software on any unsupported classic Macintosh)
You might find that if you have overclocked your LC 475, Performa 475, Performa 476 or Quadra 605 by moving the speed selecting resistors on the underside of the board, you can no longer install some operating system versions, including Mac OS 8.1 for example.
The reason for this, is that the machine id gestalt, effectively the number representing the computer model from the operating system’s perspective, changes when you change the computer’s speed in this way. When you launch some System installers, they check the machine id gestalt, and some, but not all, don’t include the id for a 33MHz LC 475 type computer.
There are three easy solutions for this, depending on your exact needs…
Try Forcing it to Install
Some Apple Installers will ignore the machine check if you hold down the opting key while launching the software. Note this unfortunately doesn’t work with the Mac OS 8.1 installer, but it does work with some older Apple installers. To do this, you can hold it down prior to double clicking, but make sure you keep it held down through the dialogue boxes until you get to the one that lets you pick your install type. At this point, remembering that the installer doesn’t have an appropriate profile for what it thinks your computer is, select “Universal System for any Supported Computer” to make sure everything that is needing gets installed. Note this will be a bigger system install than you really need as it will include all sorts of machine specific extras and even probably PPC code, that your specific computer likely doesn’t need.
Override Your Machine ID
It is possible to set your Machine ID Gestalt in software and there are a couple of different tools for doing it. The most famous one is “Wish I Were”, but for this specific job, it isn’t actually the best choice. Wish I Were is great if you want to change your machine ID long term as it changes it fairly early in the boot process (not early enough if the OS doesn’t support the computer at all, but that isn’t an issue here).
On the other hand, the software “MachID Wannabe”, available here from Macintosh Garden : https://macintoshgarden.org/apps/wannabe-macintosh lets you instantly change your machine ID and it only stays changed until you change it again or shutdown / restart. This is great as without restarting you can change it, then run the installer, and get on with your life. You do still need to install MachID in the Control Panels folder and restart to be able to use it though!
If you’re trying to make an LC / Performa 475 or 476 appear stock, you’ll want to set it to 89. A Quadra 605 would be 94. It doesn’t really make a difference which of these two you pick.
Put the Resistors Back
The third and final option is to just put the resistors back to the default configuration, and instead, install my software overclock Control Strip Module. The module lets you change the speed between more configurations and on the fly. Because the resistors are in their default position, the computer retains its stock Machine ID Gestalt and all installers, software and OSes that check the machID get the expected value for an LC 475, maximising compatibility. I might be bias, but this really seems like the best solution to me!
For information about overclocking an LC 475 or related computer, or many other classic Macs, as well as useful information about the machine ID gestalt (commonly called just “gestalt”, although technically the machine ID / machID is one of many gestalts), please check out the amazing http://applefool.com, and specifically http://appplefool.com/clockchipping/.
How Registration Details are Stored in ClarisWorks 2.0 and 2.1
Where is the Registration Data Stored?
Older versions of Claris software store the registration details in the data fork. In the 68k only versions of software, it is the only information stored there and so deleting all data in the data fork resets the software to unregistered (only ever try this on a duplicate copy of the program) and you are prompted to enter new registration details when you next launch the software. This is how utilities such as Repersonalize clear the registered details in early Claris software, as well as Microsoft software.
PowerPC code in Mac applications is actually stored in the data fork, in both PPC and FAT applications. This means that running a program like Repersonalize on a PPC version will damage the application by removing all the PPC code. Looking at the data fork and comparing before and after registering a fresh copy, I found that the registration information is stored at the very end of the data fork and if you know which section it is, it can be still manually removed. I used the software Resorcerer which lets you view the data fork as well as the resource fork.
The first version of ClarisWorks to support PowerPC processors natively that I know of is version 2.1, and it is specifically 2.1CDv3 that I’ve been looking at. In this exact version, the data/code at the end of the PowerPC code in the data fork is “0012 24EC” and the first offset of the registration data is at offset 134448. This will likely vary between versions.
I might write an automated tool for this at some point if I can make sure it works with various versions.
How is the Registration Data Stored?
When you register ClarisWorks 2.1CDv3 (and some other Claris software), there are three fields, Name, Company and Serial Number. All three accept just about any text. The three strings are obfuscated, concatenated, and then appended to the data fork as three pascal strings. This means that the first byte of each string is the length of the string, and the three strings are joined together (each starting with their length).
The strings are not readable as stored because each character has been XOR’d with a number. Claris alternated between two numbers, 79 and 66 (at least in ClarisWorks 2.1CDv3). XOR means Exclusive OR, and is a binary operation. XORing a byte with another byte (which we’ll call Brian for clarity) effectively inverts (flips) any bits in the byte that match locations that are a ‘1’ in Brian, when viewed in binary notation.
For example, if our byte is 11110000, and Brian is 10101010, then XORing our byte with Brian will give the result “01011010” – we flipped every second bit. By applying Brian a second time, the bits are flipped back, and we get the original data.
You can work out what the XOR value is (i.e. Brian), if you have the input byte and the result, by XORing the original value and recorded result. So, because
Result = Byte XOR Brian
It is also true that…
Brian = Byte XOR Result
Remembering that in this case the byte is the ASCII value of a known letter in the registration details.
A Worked Example
Imagine we enter the following data into the three fields in ClarisWorks to register the software…
First, lets consider the easy bit. The first string is 8 characters long, the second is 7, and the third is 6. We now know that the three lengths that will be included will be those. I made a little spreadsheet to get the ASCII values of each letter, XOR it with 79 or 66, and then display the result in Hex.
Putting the lengths and three strings together in hex we would have…
So lets check if we got it right by loading the registered copy of ClarisWorks in Resorcerer…
Yay! It matches, so I’m not daft. The reverse is also possible, lets start with the data as stored in the datafork…
So our hex data is…
060C 2E2E 3026 3105 182D 3D29 3C03 7D6C 7E
We can see the first byte is a 6 (in hex remember, but in this instance it is 6 in hex and in decimal), so we count 6 bytes, then one more, to find the next length… which is 05, so we count 5 bytes, then one more, and find 03. So our three strings are 6, 5 and 3 characters long. Lets make another spreadsheet.
Oh look, it says “Claris”, “Works” and “2.1”! If you would like a play, you can download the spreadsheet (in OpenOffice format, compatible with Excel and LibreOffice) here :
If you have a Lego Dacta Interface B (AKA Control Lab or 9751) but don’t have the original cable, you might have trouble talking to it. The reason for this is that RX and TX are wired backwards compared to what you’d normally expect. Even more confusing, the gender of the RS232 port on the interface is female, which isn’t normally the case for this wiring.
Getting the Right Cable
Buying an Original Cable
If you’re buying to connect to a standard RS232, 9 pin port on a PC, you’ll want Lego part number 9768-1.
If you’re buying to connect to a vintage Mac with RS422 ports, you will want Lego part 9769-1.
Lastly, if you’re buying for an Acorn Archimedes computer, you’ll likely want Lego part 9768-1 (the PC part).
Making a Cable
If you’re making your own cable, you’ll need to keep in mind that the pinout of the port on the interface is described as follows in the manual :
The connector on the back panel is male and you only need the three pins shown to be connected for everything to work.
Using a Null Modem Adapter
If you’re using a standard serial cable instead of one wired for the Control Lab interface, or using a USB to RS233 adapter, you’re going to need a null modem adapter, but one with a male plug on one end and a female plug on the other.
Making Your Own Adapter
I made my own using two ribbon cable RS232 9 pin D Sub connectors from eBay. It is a little fiddly, but a fairly cheap solution. As mentioned above, the interface doesn’t actually use most of the pins (such as flow control) so you only actually need three wires.
In your adapter, connect…
Pin 5 to Pin 5
Pin 2 to Pin 3
Pin 3 to Pin 2
You should end up with something that looks like the following…
Buying an Adapter
Most adapters look like the following, but it can be tricky identifying what is a null modem adapter and what is just a pass through or gender changer, so take care. Lately these adapters have been more expensive than I would expect.
You must buy one that is wired as a null modem adapter, and has one male and one female connector.
Alternatively, there are adapter cables available, which is what I most recently purchased.
Again, you must ensure that the cable is a null modem adapter, and that it has one male and one female end.
The serial port appears for a single second, and then vanishes before you can upload any code.
This has been happening to me with Pop OS, but apparently also happens with other Ubuntu variants. I can’t believe what the cause is, but if you check dmesg and you will possibly find the following occurring :
[ 98.044600] usb 3-2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice=81.33
[ 98.044606] usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 98.044607] usb 3-2: Product: USB Serial
[ 98.046052] ch341 3-2:1.0: ch341-uart converter detected
[ 98.046409] usb 3-2: ch341-uart converter now attached to ttyUSB0
[ 98.608979] input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input41
[ 98.887664] usb 3-2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 98.888541] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
What we see happening is the OS finds the newly plugged in CH340 based serial device on your board and creates a new serial port, in my case, ttyUSB0. Excellent. But then, along comes “BRLTTY”. BRLTTY has decided it knows what this device is, removes the serial port and turns the device into an input / keyboard device. BRLTTY apparently knows best and claims all devices with the manufacturer / product ID of a USB to UART adapter chip, that is absolutely not always the product they think it is. This is really poor default behaviour, especially as this all happens silently. Apparently BRLTTY is accessibility software for the blind that is installed by default.
To solve the issue, assuming you’re not blind, simply type “sudo apt remove brltty” (without quotes) at the command line and it will be uninstalled, making the issue go away.
Not in Sync
The not in Sync error, where you get a repeated message such as the following :
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
… is an old one with many causes. One cause now seems to be that if you use a clone device, the Arduino IDE refuses to talk to it by default. The solution might be to change the “Processor” in the Tools menu to “ATmega328P (Old Bootloader)”. This would apply to boards such as Unos and Nanos. This might actually also apply to older genuine Arduino Boards.
As you might guess, I’ve had a slightly frustrating day. All I did was try to load a program into a clone board someone gave me the other day.
The Lego Power Functions electrical system replaced the older 9v system used on the Interface B (AKA Control Lab or 9751) and RCX, for connecting motors and in a small number of instances, sensors. The new connector retained the nominally 9v rating, but was no longer possible to rotate to change polarity. To solve this, reversing switches are available, and the most common battery box has a three position switch with both polarities as well as off.
The main advantage of the Power Functions connectors is that they carry an unswitch 9v power bus as well as the traditional reversable control signals. The permanent 9V is used to power the IR receiver, and is always passed through an IR receiver even when outputs are off. I suspect sensors also used the permanent 9v to power their circuitry without interruption.
This is a significant advantage over the older 9v system where sensors used to have to harvest and store power in a capacitor with the input port being momentarily switched to a different mode to recharge the capacitor and keep the sensor powered.
The Pinout
The Power Functions pinout is as follows.
It can be seen that the outer two pins have fixed voltages regardless of the polarity of the orange switch, while the pins labelled A and B (conventionally called C1 and C2, but I was unsure which was which) are swapped depending on whether the orange switch is in position 1 or position 2.
With the connector oriented with the two knobbles / studs at the top, numbering contacts from left to right, 1 is always ground, 4 is always 9v, and 2 & 3 are switchable so that one is 9v (or a reduced power signal when using an analogue controller) and the other 0v. When powered, but with no direction signal (for example plugged into a powered IR receiver, but with no buttons pressed on the basic remote), both 2 & 3 are at 0v.
With this battery box, the third central position of the orange switch completely turns off the power to all pins.
9v to Power Functions Adapter Cables
Warning! When making adapters between Power Functions and 9v, you must not connect the outer two contacts on the Power Functions end. This could/will result in a short.