Identify Your Module
Before you flash an application to the C0-microSD+, or communicate with it from a host application, you need the device path that your host assigned to it. The C0-microSD+ presents itself as an unformatted block-storage device, so any operating system that supports the standard SD protocol enumerates it without additional drivers. It carries no partition table and no filesystem, which is what makes it easy to spot among the disks your host already has. It reports a capacity of 268.4 MB on macOS and 256 MiB on Linux and Windows, which are the same quantity written in decimal units and in binary units.
If your operating system prompts you to format the device, dismiss the prompt. Formatting writes a filesystem over the on-device data layout and corrupts it.
Find the device path
- macOS
- Linux
- Windows
Run diskutil list and look for the small disk that has no volume name and no partitions.
% diskutil list
...
/dev/disk4 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: *268.4 MB disk4
Here the device is /dev/disk4.
Run lsblk and look for the small removable disk that has no child partitions.
% lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
└─sda2 8:2 0 62.9G 0 part /
sdb 8:16 1 256M 0 disk
Here the device is /dev/sdb.
Run diskpart, then run list disk, and identify the small disk.
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 256 GB 0 B *
Disk 1 Online 256 MB 0 B
Access raw disks through \\.\PhysicalDriveN, where N is the disk number, so the device
above is \\.\PhysicalDrive1.
Confirm the module identity
A device path on its own does not tell you which Signaloid compute module you found.
Confirm it with the info subcommand of the C0_SD_toolkit.py script from the
Signaloid-Compute-Module-Utilities repository. The toolkit reads
the JSON metadata prefix embedded in the on-device bitstream, decodes it, and reports the
compute_module_type field it declares. It also checks the stored bitstream against the CRC
recorded in that metadata and reports the result. Raw block-device access needs root privileges,
so run the toolkit under sudo.
sudo python3 C0_SD_toolkit.py /dev/disk4 info
The device path is a positional argument, and it comes before the subcommand.
On a C0-microSD+ the output takes the following form, where the reported module type is
C0-microSD+.
Detected compute module: C0-microSD+
Reading bitstream:
Compute module type: C0-microSD+
Creation date: ...
Bitstream type: ...
Metadata schema: ...
Bitstream size: ... bytes
Bitstream CRC: 0x...
Bitstream CRC verification: PASS
Done.
One option refines what info reports.
--rawprints the decoded metadata as a single JSON object instead of the field-by-field listing, which is convenient when you want to pass the values to another tool.
info always checks the bitstream against the CRC recorded in its metadata. The bitstream
region is always readable, so this needs no unlock: the toolkit reads back only the length the
metadata declares, compares the CRC, and prints PASS or FAIL. When the metadata carries no
CRC field the line reads unable to verify (no CRC field) instead.
If the toolkit cannot decode the metadata prefix, for example because the flash holds no
Signaloid bitstream, it stops and asks you to name the module yourself. Pass
--variant=C0-microSD+ to force the C0-microSD+ register map.
Next steps
- Getting Started, the end-to-end path from a new module to a running application.
- Flash an application, write a compiled binary into the flash user data region.
- Troubleshooting and FAQ, what to do when the module does not enumerate or the toolkit cannot reach it.