Discussion:
[linux-uvc-devel] bulk interface issue
Oleksij Rempel
2014-02-15 09:44:54 UTC
Permalink
Hello all,

i have Asus UX302LA with buildin uvc webcam: 1bcf:2987 Sunplus
Innovation Technology Inc.
This cam uses bulk stream and has some troubles with current linux uvc
driver. It is driver bug since it works on plain uvcvideo windows driver
(even XP SP2 :)).

The symptom is fallowing:
- the cam will work first time with all linux apps
- after stream off it will take about 4 seconds untill webcam LED will
go off too. The time is equal to usbautosuspend settings.
- it will be impossible to start webcam second time. Even no reboot to
windows will help. Only complete power off will restore functionality.
- if i disable asbautosuspend, webcam will work, but LED will never go
off even if it is not used.

It looks like VS interface is not turned off on Linux and in combination
with usb autosuspend, webcam or usb link will go to nirvana.

After comparing usb log from windows and linux i found that this webcam
need CLEAR HALT of VideoStreaming interface. Linux driver will do only
SET INTERFACE command. Suddenly i don't have other bulk webcams to see
if windows do it with all of them.

Here is comparison of different webcams and operations which do windows8
on stream end:
Asus UX302LA (UVC 1.00; Bulk) - 1bcf:2987 Sunplus Innovation Technology Inc.
• CLEAR HALT (Interface=0x1) VS interface

Logitech C905: (UVC - 1.00; ISO)
• SET INTERFACE (Interface=1)
• CLEAR HALT (Interface=0x7) Halt interrupt EP

Logitech C600: (UVC - 1.00; ISO)
• SET INTERFACE (Interface=1)
• CLEAR HALT (Interface=0x7) Halt interrupt EP

Logitech E3500: (UVC - 1.00; ISO)
• CLEAR HALT (Interface=0x7) Halt interrupt EP
• SET INTERFACE (Interface=1) (different order then in c600 and c905 )

Logitech C920: (UVC 1.00; ISO)
• SET INTERFACE (Interface=1)
• Interrupt is EP 3, why it is not halted?

Asus UX31A (UVC - 1.00; ISO) - 04f2:b330 Chicony Electronics Co., Ltd
Asus 720p CMOS webcam
• SET INTERFACE (Interface=1)
• Interrupt is EP 3, why it is not halted?


So far it looks like Windows8 use CLEAR HALT for Bulk and SET INTERFACE
for Iso. But i don't understand why Windows8 trying to halt Interrupt if
EP=7 and not doing that if EP=3?

PS: See my current patch in attachment.
--
Regards,
Oleksij
Oleksij Rempel
2014-02-15 09:47:30 UTC
Permalink
Hello all,

i have Asus UX302LA with buildin uvc webcam: 1bcf:2987 Sunplus
Innovation Technology Inc.
This cam uses bulk stream and has some troubles with current linux uvc
driver. It is driver bug since it works on plain uvcvideo windows driver
(even XP SP2 :)).

The symptom is fallowing:
- the cam will work first time with all linux apps
- after stream off it will take about 4 seconds untill webcam LED will
go off too. The time is equal to usbautosuspend settings.
- it will be impossible to start webcam second time. Even no reboot to
windows will help. Only complete power off will restore functionality.
- if i disable asbautosuspend, webcam will work, but LED will never go
off even if it is not used.

It looks like VS interface is not turned off on Linux and in combination
with usb autosuspend, webcam or usb link will go to nirvana.

After comparing usb log from windows and linux i found that this webcam
need CLEAR HALT of VideoStreaming interface. Linux driver will do only
SET INTERFACE command. Suddenly i don't have other bulk webcams to see
if windows do it with all of them.

Here is comparison of different webcams and operations which do windows8
on stream end:
Asus UX302LA (UVC 1.00; Bulk) - 1bcf:2987 Sunplus Innovation Technology Inc.
• CLEAR HALT (Interface=0x1) VS interface

Logitech C905: (UVC - 1.00; ISO)
• SET INTERFACE (Interface=1)
• CLEAR HALT (Interface=0x7) Halt interrupt EP

Logitech C600: (UVC - 1.00; ISO)
• SET INTERFACE (Interface=1)
• CLEAR HALT (Interface=0x7) Halt interrupt EP

Logitech E3500: (UVC - 1.00; ISO)
• CLEAR HALT (Interface=0x7) Halt interrupt EP
• SET INTERFACE (Interface=1) (different order then in c600 and c905 )

Logitech C920: (UVC 1.00; ISO)
• SET INTERFACE (Interface=1)
• Interrupt is EP 3, why it is not halted?

Asus UX31A (UVC - 1.00; ISO) - 04f2:b330 Chicony Electronics Co., Ltd
Asus 720p CMOS webcam
• SET INTERFACE (Interface=1)
• Interrupt is EP 3, why it is not halted?


So far it looks like Windows8 use CLEAR HALT for Bulk and SET INTERFACE
for Iso. But i don't understand why Windows8 trying to halt Interrupt if
EP=7 and not doing that if EP=3?

PS: See my current patch in attachment.
--
Regards,
Oleksij
--
Regards,
Oleksij
Loading...