Blame view

kernel/linux-imx6_3.14.28/Documentation/usb/wusb-cbaf 3.18 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  #! /bin/bash
  #
  
  set -e
  
  progname=$(basename $0)
  function help
  {
      cat <<EOF
  Usage: $progname COMMAND DEVICEs [ARGS]
  
  Command for manipulating the pairing/authentication credentials of a
  Wireless USB device that supports wired-mode Cable-Based-Association.
  
  Works in conjunction with the wusb-cba.ko driver from http://linuxuwb.org.
  
  
  DEVICE
  
   sysfs path to the device to authenticate; for example, both this
   guys are the same:
  
   /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4.4/1-4.4:1.1
   /sys/bus/usb/drivers/wusb-cbaf/1-4.4:1.1
  
  COMMAND/ARGS are
  
   start
  
     Start a WUSB host controller (by setting up a CHID)
  
   set-chid DEVICE HOST-CHID HOST-BANDGROUP HOST-NAME
  
     Sets host information in the device; after this you can call the
     get-cdid to see how does this device report itself to us.
  
   get-cdid DEVICE
  
     Get the device ID associated to the HOST-CHID we sent with
     'set-chid'. We might not know about it.
  
   set-cc DEVICE
  
     If we allow the device to connect, set a random new CDID and CK
     (connection key). Device saves them for the next time it wants to
     connect wireless. We save them for that next time also so we can
     authenticate the device (when we see the CDID he uses to id
     itself) and the CK to crypto talk to it.
  
  CHID is always 16 hex bytes in 'XX YY ZZ...' form
  BANDGROUP is almost always 0001
  
  Examples:
  
    You can default most arguments to '' to get a sane value:
  
    $ $progname set-chid '' '' '' "My host name"
  
    A full sequence:
  
    $ $progname set-chid '' '' '' "My host name"
    $ $progname get-cdid ''
    $ $progname set-cc ''
  
  EOF
  }
  
  
  # Defaults
  # FIXME: CHID should come from a database :), band group from the host
  host_CHID="00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"
  host_band_group="0001"
  host_name=$(hostname)
  
  devs="$(echo /sys/bus/usb/drivers/wusb-cbaf/[0-9]*)"
  hdevs="$(for h in /sys/class/uwb_rc/*/wusbhc; do readlink -f $h; done)"
  
  result=0
  case $1 in
      start)
          for dev in ${2:-$hdevs}
            do
            echo $host_CHID > $dev/wusb_chid
            echo I: started host $(basename $dev) >&2
          done
          ;;
      stop)
          for dev in ${2:-$hdevs}
            do
            echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > $dev/wusb_chid
            echo I: stopped host $(basename $dev) >&2
          done
          ;;
      set-chid)
          shift
          for dev in ${2:-$devs}; do
              echo "${4:-$host_name}" > $dev/wusb_host_name
              echo "${3:-$host_band_group}" > $dev/wusb_host_band_groups
              echo ${2:-$host_CHID} > $dev/wusb_chid
          done
          ;;
      get-cdid)
          for dev in ${2:-$devs}
            do
            cat $dev/wusb_cdid
          done
          ;;
      set-cc)
          for dev in ${2:-$devs}; do
              shift
              CDID="$(head --bytes=16 /dev/urandom  | od -tx1 -An)"
              CK="$(head --bytes=16 /dev/urandom  | od -tx1 -An)"
              echo "$CDID" > $dev/wusb_cdid
              echo "$CK" > $dev/wusb_ck
  
              echo I: CC set >&2
              echo "CHID: $(cat $dev/wusb_chid)"
              echo "CDID:$CDID"
              echo "CK:  $CK"
          done
          ;;
      help|h|--help|-h)
          help
          ;;
      *)
          echo "E: Unknown usage" 1>&2
          help 1>&2
          result=1
  esac
  exit $result