Commissioning
Prepare your host system
Note
This manual refers to control software version 24.01.1.
Quickstart
This quickstart guide clones the upstream git repository to install the
control software.
This installation method provides easy access to files in the
contrib-directory, which are needed later during setup.
There are also other ways to install the control software,
like the installation from Linux distribution package repositories
or from pypi via pipx or a venv.
See the usbsdmux tool README
for more information on the currently preferred installation methods.
Clone the git repository:
$ git clone https://github.com/linux-automation/usbsdmux.git
$ cd usbsdmux
Create and activate a virtualenv for usbsdmux:
$ python3 -m venv venv
$ source venv/bin/activate
Install usbsdmux into the virtualenv:
$ python3 -m pip install .
Now you can run the
usbsdmuxcommand by giving the appropriate/dev/sg*device, e.g.:
$ sudo venv/bin/usbsdmux /dev/sg0 dut
$ sudo venv/bin/usbsdmux /dev/sg0 host
Have a look at the following chapter to learn how to use udev
to run the usbsdmux command without root privileges and how
to uniquely identify the /dev/sg* devices of multiple USB-SD-Muxes.
Using as root
You can use the usbsdmux command as root, if it suits you.
The usbsdmux script can be called as root (e.g. by using sudo) without
sourcing the virtualenv.
To do so call the usbsdmux script inside the bin/ directory of the virtualenv:
$ sudo /path/to/virtualenv/bin/usbsdmux /dev/sg0 dut
Using as normal user / Reliable names
Control Device
The example udev-rule in contrib/udev/99-usbsdmux.rules serves two purposes:
Allow users currently logged into the system and users in the
plugdevgroup [1] to access connected USB-SD-Muxes.Create a reliable path in the filesystem to access specific USB-SD-Muxes based on their pre-programmed unique serial number. This is useful when multiple USB-SD-Muxes are connect to a system, as the enumeration-order, and thus the
/dev/sg*numbering, may differ between reboots. The serial number is printed on a label attached to the device.
Users of a Debian based distribution [1] can install the udev rule by copying it to the appropriate location and reloading the active udev rules:
$ sudo cp contrib/udev/99-usbsdmux.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
For each newly-connected USB-SD-Mux a symlink to its /dev/sg*
device will appear in /dev/usb-sd-mux/. These links contain the
devices unique serial number and can be used as arguments to the
usbsdmux command.
Mass Storage
The generic udev rules already generate a reliable symlink.
The block device will appear as /dev/disk/by-id/usb-LinuxAut_sdmux_HS-SD_MMC_*-0:0.
Hardware Preparations
If you have prepared your host system to control the USB-SD-Mux, connect your USB-SD-Mux to your host system with an appropriate USB-Cable.
The host will detect the USB-SD-Mux as an off-the-shelf card reader:
cfi@klee:~$ dmesg -w
[55748.877949] usb 1-4.4.3: new high-speed USB device number 62 using xhci_hcd
[55748.978215] usb 1-4.4.3: New USB device found, idVendor=0424, idProduct=2640, bcdDevice= 8.a2
[55748.978227] usb 1-4.4.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[55748.981779] hub 1-4.4.3:1.0: USB hub found
[55748.985373] hub 1-4.4.3:1.0: 1 port detected
[55749.273992] usb 1-4.4.3.1: new high-speed USB device number 63 using xhci_hcd
[55749.435323] usb 1-4.4.3.1: New USB device found, idVendor=0424, idProduct=4041, bcdDevice= 2.09
[55749.435332] usb 1-4.4.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[55749.435337] usb 1-4.4.3.1: Product: usb-sd-mux_rev4.0
[55749.435342] usb 1-4.4.3.1: Manufacturer: Linux Automation GmbH
[55749.435346] usb 1-4.4.3.1: SerialNumber: 000000000382
[55749.438548] usb-storage 1-4.4.3.1:1.0: USB Mass Storage device detected
[55749.441300] scsi host2: usb-storage 1-4.4.3.1:1.0
[55750.459336] scsi 2:0:0:0: Direct-Access LinuxAut sdmux HS-SD/MMC 2.09 PQ: 0 ANSI: 0
[55750.460980] sd 2:0:0:0: Attached scsi generic sg0 type 0
[55750.463741] sd 2:0:0:0: [sdb] Attached SCSI removable disk
The provided udev-rules will create a symlink for every USB-SD-Mux in
/dev/usb-sd-mux/.
cfi@klee:~$ ls /dev/usb-sd-mux/
id-000000000382
Additionally udev will create a symlink in
/dev/disk/by-id/:
cfi@klee:~$ ls /dev/disk/by-id/usb-PTX_sdmux*
/dev/disk/by-id/usb-LinuxAut_sdmux_HS-SD_MMC_000000000382-0:0