为机台添加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没有做任何修改
:http://www.cnblogs.com/bugtags/articles/4159701.html