為機台添加USB camera的支持。連續幾天看log,改代碼,從app到kernel全瀏覽了幾遍。最后結果是機台問題。
在網上找到的,有人添加成功的案例:http://www.eoeandroid.com/thread-252676-1-1.html
按照里面說的,改權限,改open參數。結果還是起不來。app的/dev/video節點按照自己機台改為9了,cameraId按照情況改為2.uvc識別正確,進入probe了。
百度發現國內基本就沒有多少有用的,一共找到兩個比較有用的博客1: http://blog.csdn.net/sfrysh/article/details/17304771
2:http://blog.csdn.net/hclydao/article/details/21235919
還有一個論壇上說kernel里面要enable CONFIG_USB_VIDEO_CLASS等等。跟我關系不大
而我的錯誤基本沒有解決 。
沒辦法,上谷歌。亂七八糟的方法就不說了,我一般都是直接輸IP: 64.233.167.165 .這樣就可以直接搜了,當然結果里面的github上不去。
我的log顯示是: (沒有按時間排)
12-12 01:50:48.182 34 34 I KERNEL : [ 357.419928] uvcvideo: USB isochronous frame lost (-71).
12-12 01:51:15.492 34 34 I KERNEL : [ 384.718804] usb 1-1: USB disconnect, device number 3
12-12 01:51:15.502 1328 1371 E WebCam : VIDIOC_DQBUF error 19, No such device
12-12 01:50:48.222 34 34 I KERNEL : [ 357.443337] uvcvideo: Failed to resubmit video URB (-19).
還有什么VIDEO_S_MFT之類的錯誤。
在谷歌上找到兩種說法比較可信,一種是電壓不夠,換了5V供電就可以了;二是pixel_format就是設置的格式不對,需要設置成yuyv的。
我按這兩個,先改了格式,有效果,但是camera還是起不來。
然后用了一個帶電源的usb hub,SimpleWebCamera起來了 ,但是很卡,而且過一會兒就死掉重啟了。
由此,應該是供電的問題。
接下來換了一個大的平板,camera完全可以運行。從其他地方得知,大平板的供電能力強於之前用的,猜測還是供電,導致的小平板usb camera卡頓。(依據:app相同,kernel基本相同,沒有走hal,framework肯定一樣)
最后發現,小平板運行死掉的log:
uvcvideo: Dropping payload (out of sync).
這個log在uvc_video.c中,繼續追。
//************************************神奇的分割線***********************************************************
12月15日
現在才發現,想東西不能太簡單。
上周五leader來問到底是不是電流問題,然后拿了一個5V/1.35A的電源來試了一下,發現usb camera還是起不來。所以感覺不像電流的問題。等EE來支援
今天百度的時候發現,在ipad上有人想接U盤,結果報打電流錯誤。 http://bbs.feng.com/read-htm-tid-5945583.html這上面8樓的覺得有道理,而且下面驗證了。
所以我打算用無源hub測試一下。
——————————————————————1小時后——————————————————————
無源hub是可以的。但是EE過來把原來的30cm左右的線換成2cm的線,接機台(不接hub)竟然也可以運行。EE測得cable阻抗較高,電壓下降到4V.
所以我搞不清是電壓問題還是電流問題。
另:camera芯片被短路燒了,暫時終結任務。
------------------------------------------------------n天之后--------------------------------------------------------
事實證明,平板本身是支持uvc 的,因為kernel層有uvc的代碼。apk自帶jni就可以了,有其他team用羅技c270實現了,不需要改video0權限,第三方apk直接可用。image沒有做任何修改