Files over USB
Files reach the CrossPad over its main USB port in two ways. For players, the SD card can appear on the computer as an ordinary USB drive. For developers, a file-transfer tool reads and writes single files and sends the assets partition over the serial port.
The SD card as a USB drive
Section titled “The SD card as a USB drive”Settings → USB → SD card as USB drive → Start restarts the CrossPad into transfer mode. The computer then sees the card as a USB drive, and you copy kits and samples onto it with your file manager. USB mass storage is a standard every desktop system reads, so it works with Linux, macOS and Windows. Copying runs at about 0.5–0.67 MB/s. The steps are in Your sounds.
- Transfer mode is a start of its own. It starts only the screen, USB and the card: no sound, no kits, no apps. The card has one owner, the computer, so nothing on the CrossPad writes to it at the same time.
- The CrossPad only passes on what the computer asks for. It never formats, repairs or rewrites the card itself.
- Leaving is a restart. Exit and restart on the transfer screen (touch, the encoder or a click of the power button) starts the CrossPad as normal, and it reads the new kits. A power cycle or a reset always starts it as normal too.
- You start it on the CrossPad. There is no way to start transfer mode over Bluetooth or MIDI, so a computer can never take the card by itself.
- With no card in the slot, the transfer screen says No SD card and offers only Exit.
Single files over the serial port
Section titled “Single files over the serial port”tools/fs_transfer.py in the firmware project reads and writes files on a running CrossPad. It needs the
MIDI + Serial USB mode; from MIDI + Audio mode it asks the CrossPad to switch, and with
Ask before USB serial on, the CrossPad asks you to Allow it first.
python3 tools/fs_transfer.py roots # the storage areas and their usepython3 tools/fs_transfer.py ls /sdcard/crosspad/kitspython3 tools/fs_transfer.py push kit.json /sdcard/crosspad/kits/MYKIT/kit.jsonpython3 tools/fs_transfer.py pull /sdcard/crosspad/recordings/rec_001.wav rec_001.wavpython3 tools/fs_transfer.py mkdir /sdcard/crosspad/kits/MYKITpython3 tools/fs_transfer.py rm /sdcard/crosspad/recordings/rec_001.wav| Root | What it is |
|---|---|
/sdcard | the SD card, when one is in |
/assets | the assets partition (below) |
/spiflash | a 4 MB storage area in the CrossPad’s flash, which the firmware itself does not use |
Paths outside these roots, and paths with .., are refused. A file you push is written next to its target first and
put in place only when its checksum matches, so a file on the CrossPad is never half-replaced.
The assets partition
Section titled “The assets partition”The assets partition holds the app icons, the fonts and the bundled pad controller
firmware. A firmware update over USB writes the firmware only, so the assets partition travels separately:
fs_transfer.py assets sends a whole new image. See Update firmware over USB.
- The CrossPad receives the whole image into memory and checks it before it erases anything. It then writes the image, reads it back, checks it again and restarts.
- The CrossPad does not need the assets partition to start. If the power fails during the write (about 10 s), it starts with plain tiles and still answers the transfer tool, so sending the image again restores it.
- Firmware installed from a package on the SD card brings its own assets, and the CrossPad puts them in place when it starts. See Firmware updates.
Ask before USB serial
Section titled “Ask before USB serial”The serial port carries file transfer, firmware updates and the console. With Settings → USB → Ask before USB serial on (the default), a computer that asks the CrossPad to switch to MIDI + Serial gets a question on the screen first: Allow switches, Deny keeps the mode, and after 30 s the question closes as Deny. Switching in Settings yourself never asks.