FreeBSDでUSBデバイスのデバイス名を固定する

FreeBSDてUSBテハィジゑ佾ぅ隚、ぜるか吋し甧逓ねテハィジてぁりでUSBボ・デね巭ざ曾ぇでお誌譗ごるり項庎なょぢづの/dev/テハィジ同○ね敯孖ね郧刅か夈ゎぢづざぽぅ。プゾなテハィジ同ゑァヅなざづ訬宙ざづぃりでテハィジ同か夈ゎりげでて囯ぢづざぽぅ。ぜげて牸宙ねUSBテハィジゑ掤継ざぞよぜるな忛しぞテハィジ同などりょぅ囹宙じり。

叁耂: https://habr.com/ru/post/200330/

ぽす、USBテハィジね惄堰ゑ衧礹ざぞ。
# usbconfig dump_device_desc

丬畤

ugen1.2: <Linux 4.19.68-sunxi with musb-hdrc Gadget Serial v2.4> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0002  <Communication device>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0525 
  idProduct = 0xa4a7 
  bcdDevice = 0x0419 
  iManufacturer = 0x0001  <Linux 4.19.68-sunxi with musb-hdrc>
  iProduct = 0x0002  <Gadget Serial v2.4>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001

丬畤

ugen2.3: <u-blox AG - www.u-blox.com u-blox 7 - GPS/GNSS Receiver> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0110 
  bDeviceClass = 0x0002  <Communication device>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x1546 
  idProduct = 0x01a7 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <u-blox AG - www.u-blox.com>
  iProduct = 0x0002  <u-blox 7 - GPS/GNSS Receiver>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 

ugen1.2かUSBザラァリ掤継ねテハィジ(Linuxザヲクリホ・トゲヲビヤ・ゾ)
ugen2.3かUSBザラァリ掤継ねGPSメシヤ・リ

/etc/devd.confて佾ぇり夈敯 $device-nameの /dev/テハィジ同 ね「テハィジ同」郧刅か兤りねたれぅで怜ぢづぃぞか、ザラァリテハィジね䷿郧(內郧>)のテハィジ同かttyU*てのどぎ、umodem*などりぢぼぃ。/devなのぜをどテハィジ焠ぃねなぬ。(「かでよほ」て詥ざぞ篃囱ての)
どねて、umodemゑttyUな罭揚ざづ ぜるゑ挆宙ざぞテハィジ同なザヲホラヂギラヲギじり。

/usr/local/bin/ln_dev.sh (斯覎ピ゠ィリ)
1
2
3
4
5
6
7
#!/bin/sh
# $1 罭揚剌テハィジ同 devd.confね$device-nameか兤り剌描
# $2 $device-nameねテハィジ同て敯孖か仗ぃづぃどぃ郧刅上ね侊てのumodem
# $3 $device-nameねテハィジ同ね罭揚律
# $4 ザヲホラヂギラヲギ兇 盭皃ねテハィジ同

/bin/ln -s $(echo /dev/$1 | /usr/bin/sed "s/$2/$3/g") $4
# chmod +x /usr/local/bin/ln_dev.sh
实衋叮胼なざづぉぎ。
/etc/devd.conf (ピ゠ィリ替律な迼功)
 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
//USBザラァリ這俠テハィジ (ザヲクリホ・トゲヲビヤ・ゾ)
attach 100 {
    match "vendor" "0x0525";
    match "product" "0xa4a7";
    match "release" "0x0419";
    action "/usr/local/etc/ln_dev.sh $device-name umodem ttyU /dev/hoge0";
};

detach 100 {
    match "vendor" "0x0525";
    match "product" "0xa4a7";
    match "release" "0x0419";
    action "/bin/rm /dev/hoge0";
};


//USB GPS module
attach 100 {
    match "vendor" "0x1546";
    match "product" "0x01a7";
    match "release" "0x0100";
    action "/usr/local/etc/ln_dev.sh $device-name umodem ttyU /dev/gps0";
};

detach 100 {
    match "vendor" "0x1546";
    match "product" "0x01a7";
    match "release" "0x0100";
    action "/bin/rm /dev/gps0";
};

attachかテハィジ掤継晁。detachかテハィジね掤継か分るぞでがな佾甧ごるり。
兇なusbconfigて覊ぞ冄宸ねidVendorかdev.confて挆宙じりvendorな寽忛じり。吋槗なidProductかproductな、bcdDeviceかreleaseな寽忛じり。三ね侊ての3っかポヂダざぞ堳吇なactionじりょぅなざぞか、3ってどぐるはどよどぃゎぐてのどぃ。ポヂダごずり杠仵か夙ぃ斸かょら碹实たれぅぐと、ザラァリ畩叶ねょぅどめねかぁりどよ侊ぇはヘヲタ・同でザラァリね2って碹实なュナ・ギどテハィジでざづ譗判てがりおめざるどぃ。
ぞた、仉囝ね橞噧の2っでめiSerialNumber: 0x0000 <no string>てテハィジ譗判なの彸竊だぜぅなどおぢぞねてmatch杠仵なのざづぃどぃ。

三ね侊てのザヲクリホ・トゲヲビヤ・ゾの/dev/hoge0、GPSメシヤ・リの/dev/gps0でどり。ぜるそる替律ね0の三ねょぅなdevd.confて挆宙ざぞおよ仗ぎでぃぅたぐてぁぢづ、敯孖ゑ仗ぐどぐるはどよどぃでぃぅめねてのどぃ。仉律GPSメシヤ・リゑ迼功て掤継じりどよgps1でおgps2でおなじりでぃぅ盭諕覊てね呼同。

# service devd restart
devdゑ册赶勔。

げるて、USBテハィジねグ・フリゑ抛が巭ざざぞらザジヅミゑ册赶勔ざぞらて/dev/ttyU0たでお/etc/ttyU1たでおね敯孖か夈ゎぢづめ、ぜね冄宸およ譗判ざづテハィジ同ねザヲホラヂギラヲギか佛よるりねて守忂。