私はCypressの2つのプロトタイプボード、CY8CKIT-043とCY8CKIT-049を使用しています。
最初のものをUSBポートに接続すると、1つが作成され、/dev/ttyACM0
デバイスと通信できます。
第二に、状況はより複雑です。ボードにUSBシリアルデバイスがあるようですが、何も取り付けられていません。
2番目のデバイスは温度計で処理されます(dmesg
lsusbが報告したように)。
各デバイスに関するルールを検索しましたが、udev
より混乱しています。
働く方のために、60-openocd.rules
# Cypress KitProg in KitProg mode
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f139", MODE="660", GROUP="plugdev", TAG+="uaccess
もう1つは で見つけたのですが、よく77-mm-usb-serial-adapters-greylist.rules
わかりませんが、よく理解すると、デバイスは機能しません(?)
ATTRS{idVendor}=="04B4", ATTRS{idProduct}=="0002", ENV{ID_MM_TTY_MANUAL_SCAN_ONLY}="1"
質問
- 私が何か不可能にするつもりですか?
- それ以外の場合は、USBバスデバイス用のドライバを
/dev/ttyACMx
使用してファイルを生成するようにシステムに指示することはできますか?cdc_acm
xxx
yyy
私が試したこと 読むhttps://www.linuxquestions.org/questions/linux-hardware-18/forcing-a-specific-driver-for-a-device-through-udev-836411/、次のudevルールを作成しようとしています。
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="0002", RUN+="modprobe cdc_acm", NAME="ttytest"
しかし、成功しませんでした。
追加情報
043(業務装置)用 lsusb:
Bus 001 Device 029: ID 04b4:f139 Cypress Semiconductor Corp. Cypress KitProg
Device Descriptor:
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 8
idVendor 0x04b4 Cypress Semiconductor Corp.
idProduct 0xf139
bcdDevice 2.15
iManufacturer 1 Cypress Semiconductor
iProduct 2 Cypress KitProg
...
043のdmesg(ビジネスデバイス):
usb 1-2: New USB device found, idVendor=04b4, idProduct=f139, bcdDevice= 2.15
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=128
usb 1-2: Product: Cypress KitProg
usb 1-2: Manufacturer: Cypress Semiconductor
usb 1-2: SerialNumber: 0B05091C02179400
hid-generic 0003:04B4:F139.000B: hiddev0,hidraw3: USB HID v1.11 Device [Cypress Semiconductor Cypress KitProg] on usb-0000:00:14.0-2/input0
cdc_acm 1-2:1.2: ttyACM0: USB ACM device
049 lsusb(動作しない):
Bus 001 Device 011: ID 04b4:0002 Cypress Semiconductor Corp. CY7C63x0x Thermometer
Device Descriptor:
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x04b4 Cypress Semiconductor Corp.
idProduct 0x0002 CY7C63x0x Thermometer
bcdDevice 0.00
iManufacturer 1 Cypress Semiconductor
iProduct 2 USB-Serial (Single Channel)
...
049のdmes(動作しない):
usb 1-2: New USB device found, idVendor=04b4, idProduct=0002, bcdDevice= 0.00
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-2: Product: USB-Serial (Single Channel)
usb 1-2: Manufacturer: Cypress Semiconductor
cytherm 1-2:1.0: Cypress thermometer device now attached
cytherm 1-2:1.1: Cypress thermometer device now attached
cytherm 1-2:1.2: Cypress thermometer device now attached
答え1
何らかの理由でボード049は、独自のドライバを備えcytherm
たCY7C63x0x温度計に関連付けられたUSB製品IDを提供します。
cytherm
ドライバはベンダー+製品IDと一致するため、インターフェイスクラス、サブクラス、およびプロトコル固有の一致(ドライバとの一致)よりも優先順位が高い一致と見なされますcdc-acm
。
次の行を追加してドライバをブラックリストに追加できますcytherm
。例/etc/modprobe.d/blacklist.conf
:
blacklist cytherm
その後、ドライバをアンmodprobe -r cytherm
インストールします(ロードされている場合)。cytherm
その後、デバイスを取り外して再接続すると、cdc-acm
ドライバはそのデバイスを要求する必要があります。
この問題が発生した最初の人ではないようです。https://community.infineon.com/t5/USB-low-full-high-speed/USB-to-serial-bridge-recognized-as-Thermometer-04b4-0002-instead-of-as-a-serial/ td-p/350483
udev ルールは、ENV{ID_MM_TTY_MANUAL_SCAN_ONLY}="1"
管理者がデバイスをスキャンするように明示的に指示しない限り、ModemManager に、TTY デバイスなどのモバイルデータモデムの結果を調査しないように指示します。これは実際にはTTYのようなモデムではなく、デバイスにとって良いアイデアです。検索しようとするとエラーが発生したり、デバイスが予期せず動作する可能性があるためです。
デバイスの権限を指定するには、次の udev ルールが必要な場合があります。
ACTION=="add", ATTRS{idVendor}=="04B4", ATTRS{idProduct}=="0002", MODE="660", GROUP="plugdev", TAG+="uaccess"
明らかに、Cypressプログラミングツールを使用してボードの製品IDを変更することで、これらの競合を永久に削除することも可能です。複数のLinuxシステムで動作するためにこのボードが必要な場合は、このボードが良い選択かもしれません(詳細については上記のリンクを参照)。