Skip to main content

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.

warning

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

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.

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.

  • --raw prints 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.

note

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