...and now for something completely different...
In October 2021 I heard from April who came up with a novel concept of how to expand the flash storage on the 3040. Her description is below. The article has since inspired a number of others to experiment, one of which was János. He emailed me in November 2024 and you can read about his experience here.
April wrote:
. "So I was playing around with my 3040 again... I kinda wanted to get more storage in the thing without having to attach external devices..."
An interesting opening as the only apparent internal expansion on the 3040 is the M.2 socket for the WiFi card. As noted elsewhere the only interface signals available on this socket appear to be SDIO. The more usual PCIe and USB interfaces used by almost all add-on cards are missing.
...April continued:
"..so I ended up designing a board that fits in the M.2 slot and connects the SDIO pins to a microSD card slot. It seems to work with the various microSD cards I've tried, and I've even managed to have an OS running (very, very slowly) from one.Note that most commercially available adapters won't work here since they use PCIe and have a PCIe SD card reader chip on them - my one does not, and instead just uses the SDIO pins exposed on the M.2 connector itself."
A nice piece of lateral thinking by April. She went on to provide the necessary information to let others duplicate her work:
"If you or anyone else wants to make one of these boards the ZIP file contains the Gerber files as well as the original .kicad_pcb file. I used OSH Park to make the board and chose their 2oz-0.8mm option for this as 0.8mm is the correct thickness for an M.2 card. The socket I chose was the Amphenol 114-00841-68. To finish off I used a random screw I pulled out of a laptop hard drive cover which seems to work well for holding the card in the slot."
There are various companies out there that produce PCBs for hobbyists and you may well find one local to you. However I do note that OSH Park say "Our purple boards are manufactured in the USA and shipped free to anywhere in the world."
I have since heard from a few people have built the board but have had trouble putting it to use. This prompted me to get back in touch with April to find out what SD cards she had used in case that was the issue.
She responded:
I've used three different cards - a Samsung Evo 64GB, a Samsung Pro Endurance (old style) 128GB and SanDisk Edge 16GB microSDHC. The first two would have been SDXC due to the capacity.
My previous testing was on Windows where I had no problems. I've just now tried this again across some different OSes and it seems that Linux in particular has issues with it.
All three cards worked fine in Windows, while in Linux they were all detected and fully readable but cause the system to hang when writing. Seeing as how Windows worked with all three cards, I think the issue lies with Linux's SD driver, some hardware quirk of the 3040 itself, or an interaction between the two.
Of note is that these cards all operate at SDR104 speed in the 3040. The old 256MB card that was mentioned as working likely operates using a different mode. [David: The working 256MB card was mentioned by one of my 'it doesn't work' correspondents].
I did find that by setting SDHCI_QUIRK2_NO_1_8_V (this can be done with the boot option sdhci.debug_quirks2=4), the symptoms change, and Linux can write to the card but no longer read it. (Rebooting without the boot option causes the original symptoms to return, and I was able to successfully verify the written data that way).
I would recommend being cautious with this one as I believe it may be selecting 3.3V signaling for the onboard eMMC as well, and the datasheet for the SanDisk eMMC chip in my unit says that 3.3V operation should be limited to 1 hour maximum - it's not clear to me whether this means 1 hour at a time (thermal concerns?) or 1 hour ever (electromigration?).
So we have an issue with the Linux driver. If you've built the interface board and are able to debug the Linux driver please let me know the results. I think I'll be building the board in the near future and giving it a go.
This page will be updated as-and-when I have further news.
The Monty Python quote at the top popped into my mind as soon as I read April's email. Her contribution is rare as it doesn't require any modification to the thin client board, wiring or its case.