Why Linux kernel has restrictions on USB port and USB cameras?
Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Why Linux kernel has restrictions on USB port and USB cameras?
I love Linux and in fact all the computers that i own has Linux on it. But why
kernel authors put restrictions on the data transfer rate using USB port?
Is this true at all? I'm sayin' this because all the 6 cameras(ps3eye) that I have can be used
320x240@60fps on win7 at the same time in all cameras but on Debian Squeeze it won't
go over 20frames/sec.
I asked a Linux guru who himself hacked the kernel to get 30fps.
Also I've tested my cameras with two different applications.
Is there any way to counter this restriction? Any easy way to bypass this problem?
I suspect a possibility that the manufacturer has special or secret knowledge about how the camera works, and knows a way to modify the transfers or buffering to enhance things. For example, the camera may be operating in a "safe mode" where it only sends one buffer at a time, and waits for acknowledgment before sending the next. This mode can limit the transfer rates. With that knowledge, the manufacturer can write a driver that knows how to change the transfer or buffering mode to allow multiple buffers concurrently. They would still be transferred over the USB bus one at a time, but this could make it work efficiently with each buffer sending just as soon as the previous is sent, rather than waiting for the OS to acknowledge the previous buffer.
And they only make that driver for Windows.
When things get up into high end speeds, tricks like this are often needed. I know they do stuff like that with 10 Gbit ethernet cards and high end RAID controllers. But that is at PCIe bus speeds. USB is effectively a bus, too, but a much lower speed than PCIe. And the limitations may exist in the camera chips, where the tricks are often cheaper than getting a chip that can run at 4 times the clock speed.
But I really don't know if the above is so for your case or not. Maybe you can ask the manufacturer what is going on.
So I had wrong idea about this. I really want to transport the same driver used in Windows 7(64bit) to Linux to help the community. Where do I start? What tools do I need?
I am a self taught programmer and have knowledge in C, C++ and Linux assembly programming(asm). What knowledge do I need for this task?
Thanks everyone for your response. I learned a lot by opening this thread.
So I had wrong idea about this. I really want to transport the same driver used in Windows 7(64bit) to Linux to help the community. Where do I start? What tools do I need?
I am a self taught programmer and have knowledge in C, C++ and Linux assembly programming(asm). What knowledge do I need for this task?
Thanks everyone for your response. I learned a lot by opening this thread.
Porting Windows drivers in binary over to Linux is not something I know about. Sorry, I can't help you in that area. If you could get manufacturer information, maybe you could write a better native driver.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.