ME AND MY XCELLENT IDEAS

Well I've neglected my Gopher hole a little lately, haven't even 
added any new history snippets (if anyone actually looks at those), 
it's interesting that the same thing happened at this time last 
year. Then I thought that the novelty was probably wearing off and 
that it wouldn't be worth putting this online after all, but then I 
got interested again around the end of the year. I think it's this 
time that I always find hardest. I've always got a long list of 
business-related projects that MUST be done by the end of the year. 
Why? Because they MUST have been done by the middle of this year, 
and before that they simply HAD to be done before the start of this 
year, and... ah shit. Anyway, at some point in December I start to 
accept that they probably won't be, and that years are fairly 
arbitrary deadlines anyway (besides that ordering things from other 
businesses becomes downright impossible after Christmas), then 
settle down again. At least we've somehow officially eradicated 
Coronavirus here is Victoria, Australia (even while bizarrely the 
state government insisted that its strict policies were NOT aimed 
at eradication). Not that it does anything for the international 
postage situation which is still hurting much of the stuff I used 
to sell overseas, but with a bit of luck I'll turn on the TV news 
tonight and _finally_ hear that the requirement for wearing face 
masks indoors has been lifted. Sorry to international readers if 
this reads like rubbing your nose in it.

Anyway, onto personal projects and my Internet Client (see my 
previous Xcellent posts - I promise to stop milking that pun 
eventually) is now set up for the core task of running up-to-date 
web browsers, email, and PDF viewers for access on other computers 
on my LAN. It's also now running on the Atomic Pi, which eventually 
arrived after well over a month (though I'm not sure if the 
tracking info ever acknowleged the fact - don't know why I bothered 
watching that so closely). There seem to be quite a few Raspberry 
Pi enthusiasts around Gopher, so as they might be interested I'll 
branch off breifly into a short review:

The Atomic Pi:

Somehow this board always looked bigger in pictures than it does in 
real life - something to do with the big heatsink maybe, or the 
greater number of individual components onboard compared to the 
Raspberry Pis (though besides the Pi Zeros I've only ever seen them 
in pics as well), even though I had checked the dimensions, the 
cute little box that it came in still surprised me a little bit. 
There's a "getting started" page that was apparantly included with 
the ones sold directly by Digital Loggers, but as I had to buy from 
another seller this wasn't included. It's available for download at 
the DIL website ( https://digital-loggers.com/api.html ) and most 
importantly describes the pins for connecting power if you don't 
have one of the "breakout boards". It took a bit of digging (most 
5v plugpacks aren't rates for much current), but I eventually 
pulled out a couple of suitable ones from my plugpacks pile to use 
beyond the domain of my workbench and its old 70s-era bench PSU. I 
soldered a regular DC socket on for mounting in the case that I 
made out of a flowery-looking card box for some expensive soap 
(bought for $0.20 at the Op Shop). It's a little flammable, but 
otherwise worked out well for hanging on the wall next to the 
fridge, and was quicker to modify than 3D printing a case, which 
would have needed to be customised anyway.

It comes with a Linux distro (Lubuntu, I think) installed on its 
16GB onboard flash which works quite well, though I'd change the 
window manager and default programs for things more lightweight if 
I were going to use it. My plan is to boot from the Micro SD card 
and be able to swap that card over to my laptop and boot the same 
environment on that on the rare occasions when I compute away from 
home (really it is pretty rare). This raised the issue of UEFI 
booting, which I haven't touched before, because the Atomic Pi 
doesn't support "legacy" booting at all. My "new" laptop (an 
upgrade for me, but it's 14 years old) doesn't support UEFI, so I 
had to figure out how to get it to work for both. Actually I made 
this more complicated than it really was because I got the idea 
that UEFI only worked with GPT partitioned disks, so even though 
the Micro SD card I'm using is only 2GB, I had to partition it GPT. 
But the laptop doesn't support GPT so I had to make a "hybrid" 
GPT/MBR partition. That was a bit of mucking about, but it worked 
and I was very happy, until I then ran "fdisk -l" on the Atomic 
Pi's onboard flash and realised that its pre-installed Linux is 
actually booted from a standard MBR partition, so I didn't need to 
bother with all that GPT nonsense after all. Oh well.

Another note on the topic of booting, the BIOS seems to use the 
same option to select both Micro SD card booting and booting from 
the onboard flash. The Micro SD gets priority, but this means that 
you can't boot from the onboard flash while the bootable Micro SD 
card is inserted by changing the BIOS settings. Not a problem for 
me, but one of the quirks compared to a conventional PC where you'd 
be able to select between a HDD and a removable drive for booting. 
It does also support network booting, in fact if you reset the BIOS 
then it will spend ages trying to boot over the LAN before finally 
giving in and trying local drives - that'll be annoying when your 
BIOS battery goes flat (it's easily replacable at least).

Performance-wise it's about a match for my laptop (Intel Core 2 Duo 
T5500, dual 1.66GHz) in a quick CPU benchmark, and as noted in one 
of my earlier posts other people have benchmarked it just a little 
slower than a Raspberry Pi 4. Of course in my case the convenience 
of having it x86_64-based instead of ARM made it a an overall 
winner compared to the Raspberries, just because it's the same 
architecture as my laptop. Its CPU is an Intel Atom x5-Z8350, quad 
core which DLI highlight as being "up to 1.92GHz", but that's in 
"boost" mode and more honest specs quote its normal clock frequency 
of 1.44GHz. It does have DDR3 RAM, compared to DDR2 in the laptop 
(which I was using in place of the APi before it arrived, so I got 
a good idea of the comparative performance), and I'd say this does 
make for a slight improvement in Firefox. I've got 3GBs in the 
laptop (actually 4GB, but that last GB is out of its addressing 
range), and the APi comes with 2GB. Running on an SD card, swap 
would be murder (actually because of that it's set up to swap in 
compressed RAM instead of a swap partition), but 2GB seems to be 
plenty. I think Firefox somehow expands to fill most of the 
available RAM however much of it there is.

WiFi and Bluetooth aren't part of my plan so I haven't really tried 
them (you also need to add your own antennas for them). I thought 
about setting up the built-in audio amplifier with some small 
speakers so that I could use the thing on it's own for playing 
internet radio in the house, but doing that chews up about 60MB of 
internet data in an hour! Much cheaper (free) to just listen to the 
real radio, so I didn't bother with that either. All I really want 
is ABC Jazz, and that's actually broadcast with Digital TV (they 
must have some spare capacity or something) so maybe one day I'll 
set up a USB TV tuner to do that, though switching out the audio 
output from the TV's set-top box to some old PC speakers would 
probably be simpler. Is anyone following this?  Meh, probably not 
but who cares. HDMI works into a $5 HDMI-VGA adapter, which is good 
because my backup method of accessing the BIOS was to use the 3.3v 
serial port and that doesn't seem to be working (though I'll have 
to check again, I probably got Rx and Tx mixed up as usual). USB 
works fine in Linux - in fact this is my first USB3 computer (until 
all of those laptops I bought to resell, but I haven't started on 
them to be honest)! Though the only USB3 peripheral that I've 
picked up so far (restricted to local second-hand finds as usual) 
is a 4-port hub, which you-know isn't all that exciting on its 
own... Like HDMI, I haven't really used USB since originally 
setting it up. There's also a USB2 port on a bare header that I 
might use to connect with my printer eventually.

The one peripheral that my application does rely on is the Gigabit 
Ethernet port, so of course this turned out to have troubles. Like 
with the Pi4 the NIC is connected with PCIe, here a Realtek 
RTL8111G. Unfortunately the standard Linux driver "r8169" didn't 
work at all for me - it detected the card and added and eth0 
device, but I couldn't get any data through it at all. It turns out 
this driver has been causing people problems for years - usually 
slow speeds and drop-outs rather that outright failure - but 
strangely there's pretty much nothing out these problems with the 
Atomic Pi specifically. I guess it must be something that's only 
happened with recent Linux kernels, and there was I thinking that 
such problems would be well documented since the boards have been 
around for years now... Anyway Realtek do provide an official 
"r8168" driver (available as a non-free package for Debian, but I 
had to compile it from source) and that works a treat. Not sure how 
it can be GPL licensed, yet still not able to be endorsed as 
"free", but I'm sure there's an old mailing list thread out there 
somewhere that sort-of explains it.

Power consumption is very good, better than my little router 
actually. Measured at the mains (so including power drawn by my 
second-hand switch-mode plugpack) it peaks at 9.2W during start-up, 
then settled down to 6.44W at idle, very nice. There's an 
unpopulated header for a power button, suiting a standard push-on 
(AKA "push to make") button, and I added a big meaty red one 
sticking out the side of the case. Like a normal modern PC power 
button, this can trigger an ACPI event, so it works to trigger a 
normal shutdown. In its post-shutdown stand-by mode the APi+PSU 
draws 2.3W (I still turn it off at the wall later). As for heat, 
the big heatsink really works, and I from what I hear this is a 
real advantage compared to the Raspberry Pi 4. It generally hovers 
around the high 40s (degC), so even in hot weather there's not much 
risk of it rising high enough to be a problem. I've got it sticking 
most of the way through a big hole in the case, so it gets good 
passive airflow. There is a header on the board marked "FAN", 
though apparantly the switching transistors for this weren't 
installed. Still some people have got the fan output working, in my 
case I'm convinced it's not needed.

Oh and by the way, here's another one-liner that seems not to have 
made it into that U1FFF thing. It shows Linux system temperature 
sensor readings formatted correctly in degC (requires Bash or
similar):

for i in /sys/class/thermal/thermal_zone*/temp ; do T=`cat $i`; echo "$i: ${T:0:$(( ${#T} - 3 ))}.${T:(-3)} degC"; done

Overall the Atomic Pi works very well. It was made by AEON, who are 
actually a division of ASUS, so I guess it was designed by people 
who know what they're doing. As surplus stock from some failed 
robot product (oh yeah, unsurprisingly I haven't done anything with 
the inertial axis sensor thing either), it really is a remarkably 
versatile and powerful little board. If only I could have got it 
for $35 here in Aus instead of $90, it would have been even better.

Oh and there's a great diagram that an Atomic Pi owner posted in 
the forum showing the pin-outs much more clearly than the official 
docs. It was a Google Docs link, and that was a pain in the neck to 
access for me, so I've taken the liberty of adding it to the 
"Collected Files" section of my Gopher hole.

Ahem, yes that's my short review. Trust me, it could have been 
longer... a little bit longer anyway.

So back on my Internet Client, as usual I've only done the minimum 
that I _really_ needed to do and left the rest 'till "later". So 
I've got graphical programs running reliably over TCP, and set up 
Rexec and Telnet fairly nicely, even on my old Windows XP PC using 
Xming (though Window's Rexec client doesn't allow you to specify a 
password as a parameter, so I still have to type that manually for 
each program start, still I don't use that PC very much for 
internet stuff so that's good enough). Launching thisngs with Rexec 
doesn't run .profile etc. first, so you have to include environment 
variables like PATH and DISPLAY before the command that you want to 
run, but that's simple enough (so long as I don't need to add 
anything to PATH in the future at least). I still haven't set up 
NFS because FTP is almost good enough with it integrated into most 
file managers that I like. I'm not sure whether to cheat with Email 
and access the mail directory over NFS, or do it properly and set 
up an IMAP server. Either way I'm still being lazy and just access 
a mail client running directly on the Internet Client when I can't 
connect to servers the old ones running on my PCs. I really should 
have a central archive fetched regularly instead of slow IMAP 
connections to distant servers and manually-copied archives 
duplicated over two PCs. One day, one day...

Most of my trouble is with Firefox and, as noted in my last post on 
the subject, how it sends rendered images of the page view instead 
of the elements themselves. As such Dillo works great everywhere, 
but if I'm on WiFi and need to bring up Firefox, it's a pain in the 
neck. I was already in the habit of navigating using the 
PgUP/PgDOWN, Home, and End keys, without smooth scrolling of course 
(that absolutely destroys it), but it's still a pain. Worst are 
these fancy pages with complicated loading effects such as fading 
in and out the whole page view, you can imagine that completely 
saturates the connection. In fact when that's bad even a Ethernet 
connection to the 100Mbit Ethernet ports on my router aren't enough 
- it saturates the network so much that the page can't actually 
load, so it just goes on eternally until I open a blank tab or 
something. So that's annoying.

As and aside, for viewing PDFs Xpdf does have similar problems to 
Firefox, but gv works great. It seems to somehow send the full page 
bitmap over the network even when you're just viewing a zoomed-in 
part of it, so you can scroll around without doing the round-trip 
back to the other computer.

I measured the network performance using iperf3 and got 95Mbit/s on 
Ethernet which is alright, but only 22Mbit/s on my 802.11g WiFi 
(tested on two PCs). I've never had to care much about WiFi speed 
before, just so long as it's faster than my internet (I don't move 
big files around my LAN very often), but clearly it's not great. 
The problem is likely the Router. It's actually 802.11n but I've 
got OpenWRT installed on it and the open-source driver can only 
enable 802.11g, and now it looks like it's not very efficient even 
with that.

I don't mean to say that I regret installing OpenWRT, it has been 
very useful for assigning static IPs and hostnames for everything, 
and making that reliable. In paricular things like getting the 
laptops to receive the same IP address whether connected on 
Etherenet or Wifi, so I can unplug the Ethernet cable without 
losing the connection to the Internet Client, but do so using DHCP 
so that I can still plug the laptop into Ethernet in another 
network and not have it try to to use an IP address that's out of 
range there. But the old routers (I had a few spares) aren't the 
best match for it in this new application.

Actually these days they're not a good match for any application 
because OpenWRT no longer supports devices with 32MB of RAM. It 
still works, but the OPKG package manager does now run out of RAM 
if you try to get info about a package, which is a pain (at least 
is still lists/installs/removes them for now). I've picked up about 
ten second-hand routers over the last few year, many quite recent 
models with much better specs, but none are bloody supported in 
OpenWRT! Probably because they're mainly the ones given out by ISPs 
in Australia, and hence are probably far more common here than in 
America where the developers presumably are. I did pull one open 
and found a serial header (four pins, with two marked 3.3v and 
GND), but couldn't get anything out of it in spite of much trying 
at differnet baud rates (and I'm sure I tried every Rx-Tx 
combination possible with that one). Adding OpenWRT support for a 
new router model would be a pretty major project anyway, and I 
don't really have time/inclination for that.

My original idea was to use a Raspberry Pi Zero W as a replacement 
router - guaranteed to have enough RAM (512MB) for generations of 
OpenWrt releases. But now that I have to get enough data through to 
stream Firefox to me, going WiFi-only like I was planning is out, 
and this test shows that even a USB Ethernet adapter (which I could 
use with an external network switch, I've got a few small ones 
spare) won't be near fast enough:
https://notenoughtech.com/raspberry-pi/raspberry-pi-internet-speed/

So I'm kind-of stuck for that. Of course the Atomic Pi itself, 
along with a network switch, would make a good router. But I like 
OpenWrt, which is not at all suitable for running things like 
Firefox on, and I also prefer the security of having the only 
computer that connects directly to the internet (and runs the 
firewall) untainted by that sort of software. I could buy another 
one I suppose, but they're a lot pricier than a RPi Zero W. As with 
the Internet Client configuration TODOs, I'm probably going to 
stick it out with the current almost-good-enough system until 
OpenWRT becomes completely unusable with the old router.

Speaking of software pains, I finish all this and then hear about 
Xorg's impending abandonment by developers in preference to 
Wayland. Accessing windows over TCP seems to be a complete 
afterthought with Wayland (probably deliberate, in contrast to X), 
and if it works at all it seems that it will have to be like 
Firefox - streaming high-res images over the network, for 
everything! Argh!

Is it just me or is my attempt to tame the 
internet-software-upgrade beast by isolating everything on one 
system just set to anger new upgrade monsters from other corners of 
of the Linux universe? Sigh... Me and my Xcellent ideas.

 - The Free Thinker