討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 討論區最近新進100則主題 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
求救usb device isochronous transfer problem
更改我的閱讀文章字型大小
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/1 下午 09:51:37
各位先進、大大:
小弟我的問題如下:
目前我在做use headset device 具同headphone and microphone的usb 耳機麥克風裝置,我在get descriptor state可以讓PC認到我的device,就是在裝置管理員中看到usb音效裝置,但是在data transfer state,卻都沒看到pc發in/out token,這樣我就沒有辨法丟資料給pc或收資料。
我用CATC錄package,發現pc 發
1.
set endpoint (22 01 00 01 01 01 00 03 00 set sample rate)
out
22 56 00(22050hz)
2.
set interface (01 0b 00 00 01 00 00 00)
再來就不發in/out isochronous token了,就只有錄到SOF token而已
再請各位先進、大師幫忙解答,謝謝!
作者 : yohji(阿泰) C++ Builder卓越專家貼文超過500則
[ 貼文 566 | 人氣 3153 | 評價 3150 | 評價/貼文 5.57 | 送出評價 10 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jasonchung註記此篇回應為很有道理 2010/5/3 上午 10:03:28
1.有開錄音程式 or 音樂播放軟體來送收IN/OUT token嗎?
2.這應該是device firmware端的問題
   看是要下斷點 or toggle I/O來確認是否有收到IN/OUT token中斷
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/3 上午 10:16:09
感謝啊泰大師的回應。
我有開音效裝置(控制台-->聲音及音效裝置-->音訊tag下-->音效播放和音效錄音都有選到我的device),
但我的device在pc辨識到之後,就只有發SOF token,沒有in/out token,我看我的chip上endpoint status是show error,但還不知為何造成的。
若大師有空的話,再請幫忙解答,謝謝。
作者 : yohji(阿泰) C++ Builder卓越專家貼文超過500則
[ 貼文 566 | 人氣 3153 | 評價 3150 | 評價/貼文 5.57 | 送出評價 10 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/3 上午 10:22:50
先用CATC or ellisys之類的USB 分析儀器看看封包是否有處理正確
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/3 下午 04:08:22
啊泰大師:
我用CATC錄的結果,是當PC設定完isochronous endpoint 的sample rate,就沒有丟in/out token,照理講,這時應當就要做isochronous data transfer了,但由狀態看來,pc卻認為沒設定好,而不做資料傳輸。
我比較別人可以正常work的device,它前面descriptor 階段,走到這個set isochronous endpoint sample rate之後,就可正常看到pc丟in/out token了。
而我也是摸擬這個裝置來做的,但卻不行,還請大師指點,謝謝。
作者 : yohji(阿泰) C++ Builder卓越專家貼文超過500則
[ 貼文 566 | 人氣 3153 | 評價 3150 | 評價/貼文 5.57 | 送出評價 10 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/3 下午 04:31:10
我不是大師^^|
你有把封包打開來看嗎^^? 有沒有NAK or STALL
再來就是比對每個EP0封包的內容囉
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/4 上午 11:32:20
啊泰大大:
我找到原因了,因我的device chip usb ip是2.0,我中間接上一個full speed hub就可以收到pc發出in/out token了。
至於usb 2.0 ip如何去support isochronous endpoint transfer,這個我還要再查,若大師有建議的,再請指點,謝謝!
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/4 下午 05:34:38
請問如何讓pc 可以在usb 2.0的介面下,跑iso data transfer,因我目前的狀態是,我的chip 是usb 2.0 介面,若直接插上pc,pc就不會in/out iso data transfer token,但前面的get descriptor 是可以的,pc有認到device。
但若中間接一個full speed hub,就可以做in/out iso transfer,因此時pc 就會發 in/out iso token,目前不知是什麼原因,是否pc上不接受device 是用high speed來做iso transfer呢?

再請版上的前輩大師們幫忙解答,謝謝!
作者 : tdtsai(新兵衛) 驅動程式優秀好手貼文超過200則
[ 貼文 362 | 人氣 779 | 評價 1290 | 評價/貼文 3.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jasonchung註記此篇回應為很有道理 2010/5/4 下午 06:58:48
USBAudio.sys 無法正常的在High Speed 下 work. 你把Device limit 在Full Speed 上就可以了 ... 不然就只能殘念了 ...

>請問如何讓pc 可以在usb 2.0的介面下,跑iso data transfer,因我目前的狀態是,我的chip 是usb 2.0 介面,若直接插上pc,pc就不會in/out iso data transfer token,但前面的get descriptor 是可以的,pc有認到device。
>但若中間接一個full speed hub,就可以做in/out iso transfer,因此時pc 就會發 in/out iso token,目前不知是什麼原因,是否pc上不接受device 是用high speed來做iso transfer呢?
>
>再請版上的前輩大師們幫忙解答,謝謝!
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 上午 09:16:28
感謝新兵衛大師的解答。
看來這個問題,我只能殘念了,鳴鳴!
作者 : lidder(lidda) 人氣指數超過10000點
[ 貼文 97 | 人氣 13348 | 評價 140 | 評價/貼文 1.44 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 01:54:03
應該是可以才對吧?

USB Audio 1.0 雖然是 usb 1.1時, 定出來的. 但USB2.0應該相容.
再根據 WDK 中的 Rendering and Capturing Audio Content by Using the USBAudio Driver的圖,
圖中USBD向下link到的是 OHCI 跟 EHCI. 照理說USB2.0這一條路應該是可以才對.

也許要USB Audio 2.0, 才行?

我再double check中.
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 02:04:27
感謝lidda大大的回應。
再有勞你幫忙check,因我的chip無法手動切到full speed,這一層由硬體自動偵測usb interface而做調整。
若大大有找到usb audio 有support high speed,再請告知我device應該如何的調整,才能在high speed mode下跑 usb audio function,謝謝.
感謝版上大師們的解答,由於小弟對windows driver不熟,若有知道的前輩,再請指點,謝謝。
作者 : lidder(lidda) 人氣指數超過10000點
[ 貼文 97 | 人氣 13348 | 評價 140 | 評價/貼文 1.44 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 02:27:00
別客氣...
我的check指的是要花錢去買一個high speed usb audio device回來, 試試看......但月底還沒到...
作者 : lidder(lidda) 人氣指數超過10000點
[ 貼文 97 | 人氣 13348 | 評價 140 | 評價/貼文 1.44 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 03:08:48
因為你提到 => 但若中間接一個full speed hub,就可以做in/out iso transfer => USB 1.1 deivce
所以先確認device是否為USB 2.0:
1. 先check PC端是否只剩 USB 2.0
    也就是先把 OHCI 關掉.

2. 再check device端是否 USB 2.0
    檢查port hardware. USB 1.1 跟 USB 2.0是不同的.

3. 把device直接插到PC上, 看看有沒有認到.
    有認到, 就是USB 2.0. 沒認到就是USB 1.1.

在 Availability of the Windows XP SP1 USB 1.1 and 2.0 Update (http://support.microsoft.com/kb/822603/en-us)
有提到
    The Microsoft audio driver only supports high-speed periodic isochronous devices with a period of 8 frames.
    (XP3應該也是, 8 uframe 不是等於 1 ms. )

XP3 是用 UAA, 所以看 http://www.microsoft.com/whdc/device/audio/uaa_hwdesign.mspx
其中有關USB Audio部份, 一樣USB Audio 1.0. 內有相關的設定for windows.
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 04:10:50
抱歉,各位大師,問題出在我這邊。
原因是:因我是模仿usb 1.1 audio device ,除了device descriptor要改為usb 2.0(bcdUSB)之外,最重要的地方是endpoint descriptor要做修改,這樣pc才會判斷device 為usb 2.0 high speed device.

detail descriptor 如下:
// standard endpoint
0x0009 // bLength
0x0005 // bDescriptorType = 5
0x0002 // bEndpointAddress = 0x02 ep2 out
0x0009 // bmAttributes = 0x09 isochronous & adaptive
0x00c0 // wMaxPacketSize = 0x00c0
0x0000 //
0x0001 // bInterval = 1 frame
0x0000 //
0x0000 //

-->修改為
0x0007 // bLength
0x0005 // bDescriptorType = 5
0x0002 // bEndpointAddress = 0x02 ep2 out
0x0001 // bmAttributes = 0x01 isochronous
0x00c0 // wMaxPacketSize = 0x00c0
0x0000 //
0x0004 // bInterval = 1 frame/1ms

作者 : lidder(lidda) 人氣指數超過10000點
[ 貼文 97 | 人氣 13348 | 評價 140 | 評價/貼文 1.44 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/5 下午 04:54:52
少打了一個字
8 uframe 不就是等於 1 ms.
作者 : tdtsai(新兵衛) 驅動程式優秀好手貼文超過200則
[ 貼文 362 | 人氣 779 | 評價 1290 | 評價/貼文 3.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/6 上午 11:19:48
Hi
我去Check 了一下您指出來的 http://support.microsoft.com/kb/822603/en-us
主要的重點您沒有提出來 ...
我把原文貼出來 ...
Periodic Isochronous Transfers
   Microsoft supports only periodic isochronous audio for audio-in. Microsoft has tested this only with the audio driver that is included with Windows XP.
   Support for periodic isochronous transfers is limited to devices with a period of 8 frames or less.
   The Microsoft audio driver only supports high-speed periodic isochronous devices with a period of 8 frames.
這個文件說明 只有在Audio-in(Record) 有支援 period of 8 frames.(基本上是為了WebCam上的Microphone) 所以Audio-Out(Playback) 是會有問題的 ...
我也Check 了一下USB Audio Class 1.0 及 USB Audio Class 2.0 的Spec. USB Audio Class 1.0 只支援 Full Speed. USB Audo Class 2.0 才有支援 High Speed. 而目前的 USBAudio.sys 不支援USB Audio Class 2.0. 所以以你的情況是不會Work 的啦 除非你自己去寫個Driver. 如果你只是要做實驗的話 去買台Mac 吧 Mac 的USB Audio Class Driver (10.5.7 以後的版本)可以支援USB Audio Class 1.0 on High Speed device及USB Audio Class 2.0 的Device . 你可以試試
But 你用的是那一顆Chip 呀 居然不能由MCU來設定Speed ? 可以借兩顆來玩玩嗎?? 說不一定我可以弄出可以動的東西喔 ccc


>因為你提到 => 但若中間接一個full speed hub,就可以做in/out iso transfer => USB 1.1 deivce
>所以先確認device是否為USB 2.0:
>1. 先check PC端是否只剩 USB 2.0
> 也就是先把 OHCI 關掉.
>
>2. 再check device端是否 USB 2.0
> 檢查port hardware. USB 1.1 跟 USB 2.0是不同的.
>
>3. 把device直接插到PC上, 看看有沒有認到.
> 有認到, 就是USB 2.0. 沒認到就是USB 1.1.
>
>在 Availability of the Windows XP SP1 USB 1.1 and 2.0 Update (http://support.microsoft.com/kb/822603/en-us)
>有提到
> The Microsoft audio driver only supports high-speed periodic isochronous devices with a period of 8 frames.
> (XP3應該也是, 8 uframe 不是等於 1 ms. )
>
>XP3 是用 UAA, 所以看 http://www.microsoft.com/whdc/device/audio/uaa_hwdesign.mspx
>其中有關USB Audio部份, 一樣USB Audio 1.0. 內有相關的設定for windows.
>
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/6 下午 01:34:41
感謝新兵衛大大的回應。
目前我的chip 在high speed mode下已可做isochronous transfer,主要的原因,就如同 lidda 大大所提到的重點:
The Microsoft audio driver only supports high-speed periodic isochronous devices with a period of 8 frames.

為什麼是8個frames呢?主要是high speed polling interval unit是125us,則8*125us = 1ms
而full speed polling interval unit 是1ms,所以設定interval = 1 frame

真是太感謝版上大師們的回應,讓我能很快的找到問題。
作者 : lidder(lidda) 人氣指數超過10000點
[ 貼文 97 | 人氣 13348 | 評價 140 | 評價/貼文 1.44 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/7 上午 09:41:51
我買了一隻, 回來試了一下, 好像真的不行. @@

算了, 這是微軟的問題, 寫信去抱怨一下. =..=
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/7 上午 09:54:15
感謝lidda大大的回應。
大師你買回來的usb 2.0 耳麥不能在win xp上使用嗎?
若你有CATC可以幫忙錄一下,我這邊可以看,看是什麼原因。
或者大師可以告訴我型號,有空的話,我也去買一支玩看看,看是什麼原因。
目前我這邊自已做的audio device(run high speed mode, function: headphone & microphone)是可以的,主要修改endpoint descriptor。
作者 : tdtsai(新兵衛) 驅動程式優秀好手貼文超過200則
[ 貼文 362 | 人氣 779 | 評價 1290 | 評價/貼文 3.56 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/7 上午 10:45:12
基本上應該是沒問題的 如果你在Windows XP SP3 (Playback and Record)以後的版本 你可以去買一 Creative X-Fi Surround 5.1 來參考
http://tw.creative.com/products/product.asp?category=209&subcategory=669&product=17751&listby=
But 如果你不自己寫Driver WHQL 會有問題 .... 這樣的產品三年前就有了 ...
如果在 Windows XP SP2 那就只有Record 會Work

>感謝lidda大大的回應。
>大師你買回來的usb 2.0 耳麥不能在win xp上使用嗎?
>若你有CATC可以幫忙錄一下,我這邊可以看,看是什麼原因。
>或者大師可以告訴我型號,有空的話,我也去買一支玩看看,看是什麼原因。
>目前我這邊自已做的audio device(run high speed mode, function: headphone & microphone)是可以的,主要修改endpoint descriptor。
作者 : jasonchung(jason)
[ 貼文 30 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/5/7 上午 10:59:30
感謝新兵衛大大的回應。
小弟獲益良多,^_^。
 板主 : 徵求中
 > 驅動程式 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 驅動程式 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
驅動程式
1 新兵衛 1240 
2 eBoy 980 
3 牧童哥 780 
4 北極熊 580 
5 天行者 580 
6 燒酒仙 440 
7 weber 380 
8 KEN 350 
9 jonay 180 
10 掌握文武半邊天 180 
驅動程式
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.09375