1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4# Kselftest framework requirement - SKIP code is 4. 5ksft_skip=4 6 7usage() { echo "usbip_test.sh -b <busid> -p <usbip tools path>"; exit 1; } 8 9while getopts "h:b:p:" arg; do 10 case "${arg}" in 11 h) 12 usage 13 ;; 14 b) 15 busid=${OPTARG} 16 ;; 17 p) 18 tools_path=${OPTARG} 19 ;; 20 *) 21 usage 22 ;; 23 esac 24done 25shift $((OPTIND-1)) 26 27if [ -z "${busid}" ]; then 28 usage 29fi 30 31echo "Running USB over IP Testing on $busid"; 32 33test_end_msg="End of USB over IP Testing on $busid" 34 35if [ $UID != 0 ]; then 36 echo "Please run usbip_test as root [SKIP]" 37 echo $test_end_msg 38 exit $ksft_skip 39fi 40 41echo "Load usbip_host module" 42if ! /sbin/modprobe -q -n usbip_host; then 43 echo "usbip_test: module usbip_host is not found [SKIP]" 44 echo $test_end_msg 45 exit $ksft_skip 46fi 47 48if /sbin/modprobe -q usbip_host; then 49 echo "usbip_test: module usbip_host is loaded [OK]" 50else 51 echo "usbip_test: module usbip_host failed to load [FAIL]" 52 echo $test_end_msg 53 exit 1 54fi 55 56echo "Load vhci_hcd module" 57if /sbin/modprobe -q vhci_hcd; then 58 echo "usbip_test: module vhci_hcd is loaded [OK]" 59else 60 echo "usbip_test: module vhci_hcd failed to load [FAIL]" 61 echo $test_end_msg 62 exit 1 63fi 64echo "==============================================================" 65 66cd $tools_path; 67 68if [ ! -f src/usbip ]; then 69 echo "Please build usbip tools" 70 echo $test_end_msg 71 exit $ksft_skip 72fi 73 74echo "Expect to see export-able devices"; 75src/usbip list -l; 76echo "==============================================================" 77 78echo "Run lsusb to see all usb devices" 79lsusb -t; 80echo "==============================================================" 81 82src/usbipd -D; 83 84echo "Get exported devices from localhost - expect to see none"; 85src/usbip list -r localhost; 86echo "==============================================================" 87 88echo "bind devices"; 89src/usbip bind -b $busid; 90echo "==============================================================" 91 92echo "Run lsusb - bound devices should be under usbip_host control" 93lsusb -t; 94echo "==============================================================" 95 96echo "bind devices - expect already bound messages" 97src/usbip bind -b $busid; 98echo "==============================================================" 99 100echo "Get exported devices from localhost - expect to see exported devices"; 101src/usbip list -r localhost; 102echo "==============================================================" 103 104echo "unbind devices"; 105src/usbip unbind -b $busid; 106echo "==============================================================" 107 108echo "Run lsusb - bound devices should be rebound to original drivers" 109lsusb -t; 110echo "==============================================================" 111 112echo "unbind devices - expect no devices bound message"; 113src/usbip unbind -b $busid; 114echo "==============================================================" 115 116echo "Get exported devices from localhost - expect to see none"; 117src/usbip list -r localhost; 118echo "==============================================================" 119 120echo "List imported devices - expect to see none"; 121src/usbip port; 122echo "==============================================================" 123 124echo "Import devices from localhost - should fail with no devices" 125src/usbip attach -r localhost -b $busid; 126echo "==============================================================" 127 128echo "bind devices"; 129src/usbip bind -b $busid; 130echo "==============================================================" 131 132echo "List imported devices - expect to see exported devices"; 133src/usbip list -r localhost; 134echo "==============================================================" 135 136echo "List imported devices - expect to see none"; 137src/usbip port; 138echo "==============================================================" 139 140echo "Import devices from localhost - should work" 141src/usbip attach -r localhost -b $busid; 142echo "==============================================================" 143 144echo "List imported devices - expect to see imported devices"; 145src/usbip port; 146echo "==============================================================" 147 148echo "Import devices from localhost - expect already imported messages" 149src/usbip attach -r localhost -b $busid; 150echo "==============================================================" 151 152echo "Un-import devices"; 153src/usbip detach -p 00; 154src/usbip detach -p 01; 155echo "==============================================================" 156 157echo "List imported devices - expect to see none"; 158src/usbip port; 159echo "==============================================================" 160 161echo "Un-import devices - expect no devices to detach messages"; 162src/usbip detach -p 00; 163src/usbip detach -p 01; 164echo "==============================================================" 165 166echo "Detach invalid port tests - expect invalid port error message"; 167src/usbip detach -p 100; 168echo "==============================================================" 169 170echo "Expect to see export-able devices"; 171src/usbip list -l; 172echo "==============================================================" 173 174echo "Remove usbip_host module"; 175rmmod usbip_host; 176 177echo "Run lsusb - bound devices should be rebound to original drivers" 178lsusb -t; 179echo "==============================================================" 180 181echo "Run bind without usbip_host - expect fail" 182src/usbip bind -b $busid; 183echo "==============================================================" 184 185echo "Run lsusb - devices that failed to bind aren't bound to any driver" 186lsusb -t; 187echo "==============================================================" 188 189echo "modprobe usbip_host - does it work?" 190/sbin/modprobe usbip_host 191echo "Should see -busid- is not in match_busid table... skip! dmesg" 192echo "==============================================================" 193dmesg | grep "is not in match_busid table" 194echo "==============================================================" 195 196echo $test_end_msg 197