ARCbbs - a blast from the past!
One of the main BBS servers for RISC OS back in the '90s was ARCbbs by Hugo Fiennes. The primary competitors were the simple RISCbbs and the ArchiBoard server. Later came ArmBBS and NewsFlash.
In past years, I'd been in touch with both Hugo and Keith Hall (ARMbbs) to enquire about making a 32 bit coversion of the software, but as with most questions along those lines, they never went anywhere.
I have heard that somebody is working on a port of ARMbbs, but I don't know if that's true or how far they've gotten.
Just "for the hell of it", I have written my own BBS system. It is unfinished, I work on it from time to time, but I don't know if it'll ever be finished. You can access it by connecting to my personal server (my Pi) with telnet. Unlike traditional BBS servers, mine only speaks telnet. It doesn't deal with serial devices at all.
Earlier in the week, Hugo dropped ARCbbs onto GitHub. Now, the problem here is that the sources to the version that we were all using (1.64ß32) have been lost along the way. The sources that Hugo has are apparently for 1.64 which seems to be largely the same as 1.63 in several respects.
Unfortunately, my copy of the "ßnotes" file is corrupt (all null bytes) so I can't see what changed when.
The software itself is largely written in K&R style C, with a module written in assembler to act as an interface into the back end files (message data and user data).
Unfortunately, the message data structure is not the same as the one from my old BBS. I'm aware that it did change at some point, as I have a program to convert 1.63 data to 1.64 data, but again without the change notes, I'm not sure what or when. It might need some pulling apart of the code and the data files to work out what the format should be. This is important as something somewhere is following duff pointers and writing junk into ther parts of system memory. I have managed to get the server up by using a copy of the data from an early demo of the server. However, it is extremely fragile and in the process of getting this far, I've never reset my Pi so often in such a short period of time. Suddenly we're seeing the problems of having third party extensions run with kernel level privileges and the utter lack of memory protection in RISC OS. That's not to blame Hugo here, it's a fault inherent in the design of RISC OS that just the ARCbbs module just happens to show up.
Well... having some sort of version identifier in the file and sanity checking, instead of blindly accepting the data as valid, probably would have helped, but that's the beauty of hindsight - it's easy to look back twenty eight years later and say "duh", but we have all learned that lesson the hard way - and nothing is immune, RISC OS itself is tight and fast because you can pass any old crap to a large number of OS functions, and whether or not the system blows up is basically Russian Roulette. I'm sure most C programmers have encountered the "I ran my program and the whole thing fell over like a house of cards in a hurricane" because oh oops, you passed a null pointer to something... ☺
I have not looked at the architecture of the BBS. As an overview, it is a directory with a mass collection of source files that are all used to build several things. I'm not sure if there is any overlap. I think it might help to pull the thing apart and make it be separate DDE-style builds, in order to better compartmentalise everything, and allow
Sh^C from Zap to build the current part.
Then, the fun of trying to work out what the heck is going on with all the crashiness. I know that ARCbbs worked without particular issue on a 26 bit system. Arcade BBS used it for decades. So I'm pretty sure all that is going badly wrong is down to the code acting upon faulty data and doing the wrong thing.
Here is why I know the data file "works but is still duff":
So it looks like the lookup data might be the problem.
Still, after translating some of the file paths of libraries to point to the correct locations, and a lot of patching up of the unholy mess that was the full screen editor (note - that was not written by Hugo) because K&R has a much looser definition of how functions are mdefined than ISO C, I was able to coax the server into starting up.
The World Of Cryton main menu.
The text is half height and the redraws are wrong. This is a known problem, the built-in terminal assumes 2:4 aspect modes (like MODE 12 and MODE 15). Modern displays use either 2:2 (normally) or 1:1 (modern) aspect. I'll have to fix this, as contemporary hardware can't really do the 2:4 modes.
Still, it does just work on a 32 bit RISC OS 5 machine now. That's a big leap forwards from last week...
You can see the original ARCbbs sources on GitHub at https://github.com/hfiennes/arcbbs.
If you're using NetSurf (or a mobile browser), here is a direct link to the zip download.
Or, you can download an archive with my modifications (builds on RISC OS 5 on a Pi2 using the DDE).
Generic 4012B "MP5" car radio
I ordered a replacement car radio, for €36,99. You see, Felicity had a Sony radio. It was simple, but it could play CDs, it supported FM/MW/LW (with RDS on FM), and it could also play MP3s from a plugged-in USB key. It was also capable of handling folders, so I could put my music into folders according to themes, and shuffle-play only the songs in that particular folder. There was also an Aux input. It... was pretty much all I asked for in a radio.
Caoimhe had a radio. A Clarion device that offered FM/MW/LW with RDS on FM and a CD player, plus Aux input. Sadly no USB, and probably didn't support MP3 so I'd need to burn a number of CDs.
So I looked on Amazon and, well, there's a lot of cheap (Chinese?) stuff. Some of it looks interesting, but as we shall see, it's a combination of blatant lying and reasonable hardware let down by deplorable firmware.
Let's deal with this straight away.
Part of the promotional description of this radio - note the underlined parts.
The screen is not tactile. It doesn't respond to touch at all.
Likewise, the radio reception breaks FM into three sections (FM1, FM2, and FM3) in order to allow you to set up six different channels in order to remember eighteen channels in total. There is no support for AM at all.
Installation of the audio part of the radio was really quite simple. I just had to remove the two ISO connectors from the conversion cable used with the Clarion, and insert them into the new radio. They are keyed differently, so it isn't possible to plug the 12V power supply into the audio output. Some cars apparently have the 12V supply (for when the radio should be active) and the 12V backup (always present, in order to keep the stations/settings/clock) reversed, but thankfully Aixam have wired their cars up correctly.
Of course, it helps to have a pre-wired harness. If you have to do it yourself, god help you. The instructions are extremely terse, with a wiring diagram printed so small it's hard to read, and... it's wrong.
Hooking up the radio.
Connecting the reversing camera was an entirely different thing. I figured out that the upper yellow RCA socket was for the camera input (not the antenna, as marked!). The camera was wired up, powered from the reversing lamp, and the long video cable laid into the trim from the rear of the car up to the dashboard. But... the radio just wouldn't switch to the camera even when a valid video signal was present.
It turns out that an extra connection is required. The long co-ax has a little bit of red wire sticking out of each end. Well, one end needs to be joined into the 12V power to the reversing light (isn't it lucky I'd just recently bought a battery powered soldering iron?), and the other end joins to the "pink" wire from the power supply ISO connector to the radio. You can just about see that in the above picture.
In use - MP3s on a USB key
When you switch it to play from a USB key, it will begin playing the first song it finds. You can set it to shuffle play.
Playing MP3 from a USB key.
It will read MP3 tags for the song title, the artist, and the album name. It will also display the album art, if present.
Annoyingly, if the tag isn't present, it will say "NULL" rather than simply saying nothing.
The text is too small. It probably looked good on the programmer's 21 inch screen, but when you're in a car trying to read that on a 4.1" display, it's not the best, is it?
It is possible, when you've worked out how, to access the underlying filesystem to choose a song in a folder. Unfortunately the device makes no attempt at restricting playback to only the songs in the selected folder. It's a case of all or nothing.
I have only tried the player with MP3, so I can't report on what happens with other formats such as AAC or OGG. I wonder what it displays if there are no identity tags? Probably the filename.
The device claims to support media up to 32GB. I'm not aware of any specific difference below and above 32GB (using a 512 byte sector size, that would be about 61,282,631 (note that media GB isn't the same as memory GiB!) which would require 26 bits to address...).
So what they probably mean is that the device supports FAT32 and not exFAT, which considering that exFAT is patent encumbered, it isn't a surprise. Not a lot of things support it.
Turning the big button adjusts the volume. Pressing it enters a mode where you can tweak the bass and treble, set the balance (left/right and front/back), choose a predefined EQ mode, and turn loudness on or off. Really, this sort of thing probably ought to have been in a setup menu rather than the big button.
Leaving everything at its defaults sounds "okay", but bear in mind I'm driving an Aixam which is inherently noisy.
Changing the EQ or turning on loudness feels like it is introducing distortion.
In use - radio
The FM radio appears to receive, and can autoscan for stations. You're pretty much left on your own to figure out the controls. You're also pretty much left on your own regarding the stations as - unbelievably in 2021 - this device does not support RDS.
I've not used the radio much.
In use - Bluetooth
I have not used this much either. Suffice to say that it connected to my phone easily, and the previous/next control was passed on to the phone to change what was playing. Unfortunately Bluetooth audio doesn't appear to have a method of passing information on what is playing, so the radio just shows a Bluetooth logo and "BT Connected", and once in a while, the name of the device that is connected.
In use - video
I gave this a quick test for completeness, though I cannot imagine it would be a lot of fun trying to enjoy video on a 4.1" display.
Watching videos on a car radio.
In my (brief) tests, it seemed to cope with MP4 H.264 (640×480), MKV H.264 (720p), AVI XviD (576p), AVI MJPEG 1080p, and MP4 H.264 1080p.
It does not support HEVC, and to be honest the support for 1080p is lousy. It can do it, it just can't do it in realtime. So expect the video to be slow, and the sound to stutter. This happened both with H.264 and MJPEG.
It is worth pointing out that the above video is actually wrong. Airwolf is supposed to be 4:3 aspect, as it was created before widescreen was a thing. The player just displays everything at 16:9 aspect.
In use - reversing camera
Once you figure out that it needs a 12V signal applied to the pink wire, it switches rapidly to the camera when you put the car into reverse. Music is disabled, it only shows the rear view.
How good this is depends upon your camera. In my case, it was a little noisy (no doubt a side effect of six metres of co-ax in a car, but it worked. I turned on the guide lines on my camera. I found that helped. Yesterday I backed into the hangar using the camera and didn't hit anything.
The camera outputs standard composite sync, so I do wonder if it is natively 4:3 or 16:9?
In use - controls
The radio is supplied with two remote controllers. Neither with any battery. I can't make any comment on the flat controller as I don't have a CR2032 to hand.
As for the steering wheel controller, it is useful to be able to change song and volume without taking my hands off the wheel. There is also a useful mute button, but oddly enough no play/pause (that I've found). There is a button on the radio (a backwards facing arrow like on the Enter key of many keyboards) that performs play/pause toggling. Which is quite obvious from the logo on the button, isn't it?
If sometimes incomprehensible key functions aren't enough, it gets better. When you finally find either the list of files/folders or the main menu, the up button makes the selected item move down (and vice versa). Additionally, it isn't debounced, so a press of the button may be registered as anything from zero to three presses (that I have observed).
It is utterly useless to have a controller that fixes to the steering wheel for on-the-go controls when said controller is unpredictable. Also, again, the on-screen text is often too small. I wonder how long it will be until somebody is involved in a crash because they were paying more attention to the assinine and obfuscated controls than the oncoming traffic?
In use - other
In use, the radio runs quite hot. I suspect that it because of power conversion dropping the 12V input to 5V, 3.3V, etc for the internal computer.
The rear circuit board.
I didn't need to take anything apart for this photo. The top cover just flips off, it isn't even screwed down.
The front board would be more interesting, but it appears to be two boards soldered together with the intelligence sandwiched between, so I cannot say what is actually powering this thing.
The on-screen version identification says it's a 4022 (interesting, it says 4012 on the device itself), then a serial number, then 8035EU-EN-201109. I'm guessing that means the 9th of November 2020?
It also identifies the MCU as "M5F4AV06", to which Google isn't my friend...
The controls can light up in seven colours. By standard it will cycle through the colours. Thankfully it is possible to configure it to stick to one colour.
The screen seems reasonably bright. It can be read in daylight. Unfortunately there is no mechanism to dim it at night. Or maybe there's some wire to hook up to the headlights, that the user guide didn't bother to mention?
The resolution appears to be something in the order of 800×600. Certainly, there are no obvious pixels when looking at it from a normal distance. It has a reasonably wide viewing angle. The pictures show up fairly blue in my photos, but I suspect this is the camera being tricked by the backlight. Visually it isn't as blue as it seems from the photos.
I noticed when my phone switched to GSM that the radio picked up the "duh-duh duh-duh" sounds when playing MP3s. So it would seem that it isn't shielded well enough to avoid such interference.
In short, this seems to be shovelware with a firmware that performs the advertised functions (assuming a truthful advert) but I very much doubt that the people that make this thing actually use it themselves, or they'd put a little bit of effort into fixing the bugs and annoyances.
If we ignore the false advertising, it isn't a bad device. It just has a woefully badly designed UI. This is something you'll encounter a lot on this blog - if I had a euro for every time I saw a capable enough piece of hardware ruined by deplorable firmware, I could have already retired...
It's also a good reason why the firmware for this sort of thing really ought to be released as open source. If the company isn't willing, or capable, of creating firmware that does the sorts of things users require (or, for that matter, a coherent and bug free interface), then why not leave it to people who can?
I get that some companies are protective of their firmware, but they really need to ask what they're trying to sell here - a bit of software, or a piece of hardware? Just think how many more they could shift if it had a nice feature set and could do the sorts of things that people expect?
I'm considering sending it back. I got it via Prime (delivered next day!) so I don't expect Amazon to create any problem here, given that the description blatantly lied about two main features (the touchscreen and AM reception).
The question is, what to replace it with?
Given that it only cost €36,99, should I put up with it for now, or what? There's a better CAMECHO device for about €50. The spec sounds good, but the bad reviews are rather unsettling - the device seems to be prone to crashing and getting stuck in reboot loops (well, it is running WinCE!).
Please note that while I check this page every so often, I am not able to control what users write; therefore I disclaim all liability for unpleasant and/or infringing and/or defamatory material. Undesired content will be removed as soon as it is noticed. By leaving a comment, you agree not to post material that is illegal or in bad taste, and you should be aware that the time and your IP address are both recorded, should it be necessary to find out who you are. Oh, and don't bother trying to inline HTML. I'm not that stupid! ☺ ADDING COMMENTS DOES NOT WORK IF READING TRANSLATED VERSIONS.
You can now follow comment additions with the comment RSS feed. This is distinct from the b.log RSS feed, so you can subscribe to one or both as you wish.
|David Pilling, 8th March 2021, 18:56|
Very interesting about Hugo and the sources. I am passing the info on...
(Felicity? Marte? Find out!)
List all b.log entries
Return to the site index
PS: Don't try to be clever.
It's a simple substring match.
Last read at 11:55 on 2021/06/20.
© 2021 Rick Murray
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted.
RIPA notice: No consent is given for interception of page transmission.