Internal mass storage device

Hello to all hackers! I recently bought this:

I received it today, mounted and tested it successfully. It works both with CM4 and CM5 (not tested with CM3).
I can connect my ssd to each type C port, the uConsole sees it every time. The interest of this extension is to have an internal port directly connected to CM4 (and CM5).

The idea :

Connect the ssd to this internal port to start on it directly, or boot on the SD card but have the entire system on the ssd.

Here is the experimental setup:

Where am I now?

Well, I’m a real noob. For now, impossible to start anything from the ssd!
I tried to:

  • :cross_mark: Modify the bootloader,
  • :cross_mark: Test with all the discs I had, including USB keys,
  • :cross_mark: Put /boot on the SD and the root on the ssd,
  • :cross_mark: Tinker with tutorials too old to do it.

So! I’m running out of ideas, but I’m sure it can work. The problem is that I don’t know how… So, if someone has a brilliant idea, I take it with pleasure!

Some updates !

Now, I’m trying to create an initramfs (thanks @Rex !)to redirect the /root path to the SSD, unsuccessfully at this time, but I’m determined to find the right way!

4 Likes

The data lanes for the USB need the kernel to be loaded first. With boot on the SD and root on the ssd, edit cmdline.txt to point to the ssd and have the config.txt to follow the initramfs and edit fstab. that might work.

1 Like

I might try it out tonight on a spare sd and ssd. Right now I have a internal drive but only have it mounted as my home folder.

1 Like

Sorry I don’t have any useful information regarding your question, but I wanted to thank you for the Tindie link. Somehow I had missed that. I’d been hoping the uHub (or even uPico) would either be available again, or someone else would do a run of them and offer some for sale, but this one seems better than the uHub anyway. So thanks for that pointer!

1 Like

I moved the os to n external drive a long time ago for a NAS project.

here is a link to the directions I used to do it.
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=44177

I hope this helps.

also for fun. My old NAS
https://forums.raspberrypi.com/viewtopic.php?t=60370

1 Like

Hi Rex, Can you please share a photo of the uconsole internals with the disk inside?

Hi, so if I understand correctly the sd only acts as a redirection to the SSD?

Considering all usb are 2.0 do you notice a difference in performance compared to the SD card?

1 Like

Exactly. The goal is to have durable storage for the system and data. The speed is sufficient to have decent performance, even over USB2.
(I added a photo of the experimental setup on the top post.)

Yes, I totally agree. I understand that speed may not be improving much, my main goal is reliability, as SD cards kind of suck…
I bought a CM5 with eMMC (32gb) and installed everything on it, it runs flawlessly, but I had to return it as by mistake I bought the non-wifi version.
I’m planning on buying the CM5 eMMC 64gb version once its release in Q2 2025 I would like more space but 64gb should be enough for what I plan to do with the uConsole. Ideally I would love a newer motherboard that can host SSDs.
I reached out to Alex and he told me that a new motherboard is under development but he didn’t gave much details besides that. I assume that since the PicoCalc has just been released this would be the next thing they work on, but it’s all theory for now… could be a month or 3 years… There is also other people working on motherboards though nothing concrete yet. I think is better to wait for a proper ssd solution than trying to troubleshoot existing issues, eMMC works good enough to use as of now IMO

If using the internal USB (or I suppose any of them):as a drive, this sounds like a great way to have two different OS installations and switch between them by only changing the /boot/cmdline.txt. (The caveat is that you have to manage kernel updates to ensure the same kernel is being used by both installations.)

So for people looking to switch between say, a Debian desktop and a Retropie installation, this would be a way to do it without having to swap SD cards. A simple script could be written to toggle the cmdline.txt between the locations and then it would use the other location after reboot.

If the internal USB using an SSD is actually faster even at the 2.0 speeds, then it would probably be better to put the desktop OS on the SSD and the Retropie OS on the SD (which would also allow for removal of the SD to copy ROM files and such.)

Personally, I think it would be interesting to use this for internal peripherals. The only issue there might be with the metal case, as anything with wireless capability would almost certainly need an external antenna. I’d be curious about putting an ESP-32 inside for some BLE stuff I’m doing but to work at all that would probably need to be external.

I suppose if it fit, someone could put a Pico inside the uConsole and potentially even run MMBasic on it and have a sort of built in PicoCalc, but it would be limited to serial connection and not have access to the display. Could also be a way to get a sort of DIY uPico, and perhaps with a case mod the GPIO pins could be run to somewhere else besides the expansion port (since it would already be full, offering the USB-C ports).

1 Like

Something I’ve been curious about for a while… Isn’t using a CM4/CM5 with eMMC also potentially a danger? SD cards can fail, but after enough usage, eMMC can fail as well, and then it would mean replacing the entire Pi module instead of just a cheaper SD card. I understand there are performance improvements in terms of read/write speed, but the risk of having to replace the entire Pi module eventually, combined with the extra difficulty of flashing new images to the eMMC (requiring the carrier board) made me steer clear of the eMMC option.

Does eMMC have a significantly long lifetime where this sort of thing shouldn’t be a problem? I’m just trying to better understand the risks involved. Seems like replacing an SD would be preferable to replacing an entire Pi module when, and if, it fails. And maybe doing the SSD installation gives a similar performance increase like eMMC, in which case it could be the best of both worlds?

2 Likes

Can you explain the procedure, please? I can edit the cmdline.txt and the fstab (after copying the root contents to the ssd) but I don’t understand how to edit the config.txt to redirect everything where it should be. :sweat_smile:

You need to make and add your initramfs to /boot/firmware then add initramfs custom_initramfs.img to your config.txt

1 Like

Thank you for the explanations !
Well well well… I had to inquire about this famous “initramfs”! (A real noob, I said) So I’m insisting on understanding and trying to configure the initramfs, in vain. I must have missed things on the way, but I think that’s the solution to the problem.

If I can get a few hours to spare I’ll try to build it out myself and document it. I’ll maybe put out a two file image, one for an SD and one for a USB drive. My smallest SD is 32 gig though so that seems like a waste just for a boot drive. LOL

2 Likes

I’m currently using a SD card reader, for testing some boot/rootfs shenanigans. Most flash drives will fit no problem.

5 Likes

It will store some backups! :joy: Thank you very much for your interest in this subject and for spending time on it. Your extension card looks great! It’s the famous “SDR”, isn’t it? The internal port is connected directly to the CM where it passes through a hub?

1 Like

The internal USB-C is connected to the expansions cards hub. The SDR is connected to one of the 2 USBs coming off the uConsole and the second one is for the hub.

1 Like

I’m glad you’re happy with the board.

1 Like

just got my usbc extension board (the joey), am i missing something or is mine defective. i have BJTD4R in my file manager but i am not getting a my drive to show. Is there something I need to add to my boot/config, or does it just work? I am using rexs parrot install on my cm5 emmc…