Device Hardware Testing
Manual test checklist for validating device mount, eject, detection, and UUID operations on real hardware. Run on macOS, Debian (Lima VM), and Alpine (Lima VM).
Prerequisites
- A real iPod connected via USB (FAT32 formatted)
- For iFlash tests: an iPod with an iFlash adapter
- Lima VMs provisioned:
mise run lima:test(creates VMs if needed)
Platform setup
macOS: No extra setup — connect iPod directly.
Debian VM: Connect iPod to Mac, then pass the mount point through. Lima shares the macOS filesystem, so if the iPod is mounted at /Volumes/IPOD on macOS, it’s accessible at the same path inside the VM.
Alpine VM: Same as Debian.
Test Procedure
Run each test on all applicable platforms. Record pass/fail for each.
1. Device detection
Verify podkit device add can find the connected iPod.
podkit device addExpected: The iPod appears in the device list with its volume name and UUID.
| Platform | Expected behavior |
|---|---|
| macOS | Detected via diskutil media type, iPod_Control dir, or volume name |
| Linux (native) | Detected via USB identity from /sys, iPod_Control dir, or volume name |
2. UUID lookup
Verify findByVolumeUuid resolves the correct device.
# First, find the UUIDpodkit device info
# Then verify lookup works (sync uses this internally)podkit sync --dry-run -d <device-name>Expected: The device is found by UUID and the dry-run shows the correct device path.
3. Mount (unmounted device)
Unmount the iPod first, then test mounting via podkit.
# macOS: unmount without ejectingdiskutil unmount /Volumes/IPOD
# Linux: unmountudisksctl unmount -b /dev/sdX1# orsudo umount /media/user/IPODThen mount via podkit:
podkit mountExpected (with udisks2): Mounts without root, reports mount point.
Expected (without udisks2): Returns requiresSudo with the correct sudo command.
# If sudo required:sudo podkit mountExpected: Mounts successfully, reports mount point.
4. Mount (already mounted)
Run mount when the iPod is already mounted.
podkit mountExpected: Returns success with the existing mount point (no error, no re-mount).
5. Eject
podkit ejectExpected: iPod is unmounted. On Linux with udisks2, the device is also powered off.
6. Force eject
Open a file on the iPod (e.g., cat /Volumes/IPOD/iPod_Control/Device/SysInfo &), then:
podkit eject --forceExpected: iPod is unmounted despite the open file handle. On Linux, uses umount -l (lazy unmount).
7. iFlash detection
Requires an iPod with an iFlash adapter.
podkit device infoExpected: Device assessment shows iFlash evidence:
- Block size signal (2048 bytes vs standard 512)
- Capacity signal (if >160 GB)
| Platform | How it’s detected |
|---|---|
| macOS | diskutil info block size + system_profiler USB identity |
| Linux | lsblk PHY-SEC block size + /sys USB product/vendor IDs |
8. Wrong device rejection
Configure a device with a UUID that doesn’t match the connected iPod, then try to sync:
# Edit config to set a wrong UUID for the devicepodkit sync -d <device-name> --dry-runExpected: Sync refuses with a UUID mismatch error. Does not proceed with the sync.
Results Template
Copy this table and fill in results:
| Test | macOS | Debian | Alpine ||------|-------|--------|--------|| 1. Device detection | | | || 2. UUID lookup | | | || 3. Mount (unmounted) | | | || 4. Mount (already mounted) | | | || 5. Eject | | | || 6. Force eject | | | || 7. iFlash detection | | | || 8. Wrong device rejection | | | |Notes
- Tests 1, 3, 5, 6, and 7 require native Linux with USB access (not Lima VMs)
- Tests 2, 4, and 8 can be partially validated in Lima VMs if the iPod is mounted on the host
- The Linux device manager uses
lsblkfor enumeration — verify it’s installed:which lsblk - On Linux without udisks2, mount/eject will require sudo — this is expected behavior