[問題] 有人試過在android 開發板讀/dev/hidraw消失

看板AndroidDev作者時間9年前 (2016/07/16 23:29), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
如題.. 我這邊使用了 kernel/samples/hidraw/hid-sample.c 範例 完全沒有改,把它整進去 BSP 內(android 6.0.x, kernel ) 然後拿公司同事的 MCU 接 USB到我們的開發板,在 /dev/下有 生成 hidraw0 node,MCU那邊team說data插上電後會一直送data,而我 執行 hid-sample 程式出現以下 Report Descriptor Size: 161 Report Descriptor: 5 1 9 6 a1 1 85 1 5 7 19 e0 29 e7 15 0 25 1 75 1 95 8 81 2 95 1 75 8 81 1 95 5 75 1 5 8 19 1 29 5 91 2 95 1 75 3 91 1 95 6 75 8 15 0 25 ff 5 7 19 0 29 ff 81 0 5 c 9 0 15 80 25 7f 75 8 95 8 b1 2 c0 5 1 9 2 a1 1 85 2 9 1 a1 0 5 9 19 1 29 3 15 0 25 1 95 3 75 1 81 2 95 1 75 5 81 3 5 1 9 30 9 31 9 38 15 81 25 7f 75 8 95 3 81 6 c0 c0 6 ff 0 9 1 a1 1 85 3 9 0 15 0 25 1 75 8 95 40 81 2 85 3 9 0 91 82 c0 Raw Name: STMicroelectronics Joystick in FS Mode Raw Phys: usb-f72c0000.usb-1.1/input0 Raw Info: bustype: 3 (USB) vendor: 0x0483 product: 0x5710 HIDIOCSFEATURE: Broken pipe HIDIOCGFEATURE: Broken pipe write() wrote 2 bytes read: Try again 它可以 open file ,卻不能 read, 如果我接上 HID 滑鼠,他也生成 hidraw1 可以cat /dev/hidraw1 ,滑鼠移動就有資料產生。但 hidraw0 不能,一開始以為 是 read () 的問題,查看了linux hidraw 的 Document.txt,說 read API 是去讀 INTERRUPT IN endpoint ,我們知道MCU那端要傳USB data 過來也是將資料送達到 IN 的 endpoint,傳輸是INTERRUPT ,所以 API 我認為沒問題... 這邊我又看了開發板端的 Android 系統,插上MCU那端的USB後,dmesg 出現一堆錯誤的訊息 date_urb_state(): trimming xfer length [ 987.697153] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.729154] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.761154] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.793160] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.825159] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.857346] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.889163] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.921161] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.953161] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 987.985163] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.017188] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.049164] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.081163] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.113190] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.145167] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.177164] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.209165] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.241167] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.273167] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.305167] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.337167] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.369168] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.401169] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.433169] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.465169] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.497170] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.529171] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.561171] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.593172] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.625172] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.657174] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.689173] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.721174] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.753175] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.785201] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.817176] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length [ 988.849203] dwc2 f72c0000.usb: dwc2_update_urb_state(): trimming xfer length 不知道有沒有先進遇過 hidraw 無法 read ,然後dmesg 又出現這種錯誤 呢?  感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.110.28 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1468682994.A.8A5.html

07/17 06:33, , 1F
看一下你device傳出來的 endpoint descriptor跟實際
07/17 06:33, 1F

07/17 06:34, , 2F
送出來的資料長度有沒有問題
07/17 06:34, 2F

07/18 00:11, , 4F
ce-資料讀取方式的研究
07/18 00:11, 4F

07/18 00:12, , 5F
看一下對應的kernel選項有没有打開
07/18 00:12, 5F
文章代碼(AID): #1NYbBoYb (AndroidDev)