endoscope based on Pixart 2900 device does not work

I bought a Voltcraft BS-15 endoscope on the basis that it was supported by Linux, and should work out of the box, but it doesn’t, and I have found no clues in the web.
Device
Voltcraft defines the device as 640x480 30fps 24 bit RGB, AVI video, USB 1.1
Once plugged

~> lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
(...)
Bus 001 Device 006: ID 093a:2900 Pixart Imaging, Inc.

The device is listed in Linux UVC driver & tools as supported by UVC with a discrepancy as the name listed is Agama V-315.

~> dmesg | tail -n 7
[10186.704209] usb 1-1.3: new full speed USB device number 12 using ehci_hcd
[10186.908819] usb 1-1.3: New USB device found, idVendor=093a, idProduct=2900
[10186.908823] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10186.908827] usb 1-1.3: Product: Digital_Camera
[10186.908829] usb 1-1.3: Manufacturer: PixArt Imaging Inc.
[10186.914623] uvcvideo: Found UVC 1.00 device Digital_Camera (093a:2900)
[10186.929591] input: Digital_Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input21

Trying to get a picture

~> guvcview
guvcview 1.5.3
Could not open /home/pol/.guvcviewrc for read,
 will try to create it
write /home/pol/.guvcviewrc OK
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.surround71.0:CARD=0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM surround71
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.hdmi.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM hdmi
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.hdmi.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM hdmi
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.modem.0:CARD=0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline:CARD=0,DEV=0
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.modem.0:CARD=0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline:CARD=0,DEV=0
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.modem.0:CARD=0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM phoneline
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.ICE1712.pcm.modem.0:CARD=0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM phoneline
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket                                                                                                                                                 
jack server is not running or cannot be started                                                                                                                                 
video device: /dev/video0                                                                                                                                                       
ERROR opening V4L interface: No such file or directory                                                                                                                          
Init video returned -1                                                                                                                                                          
VIDIOC_REQBUFS - Failed to delete buffers: Invalid argument (errno 22)                                                                                                    
cleaned allocations - 100%                                                                                                                                                      
Closing portaudio ...OK                                                                                                                                                         
Terminated.

Tried also

  • wxcam (fails to get proper format in AUTO, fails in all format options)
  • kamoso (which works OK on my non-UVC webcam)
    After an attempt in any of these,
~> dmesg | tail -n 2
[10186.929591] input: Digital_Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input21
[10229.007022] uvcvideo: Failed to submit URB 0 (-28).

Help wanted!
Is there anything that I missed, or a workaround for this situation?

Additional information
Host hardware: Asus P8P67 Pro Rev. 3.1 w. Intel i7, 8GB RAM, Nvidia GeForce GV-N550C-1G1
System : Linux linux-desk 3.1.10-1.9-desktop #1 SMP PREEMPT Thu Apr 5 18:48:38 UTC 2012 (4a97ec8) i686 i686 i386 GNU/Linux
(Suse Linux 12.1)

 ~> cat .guvcviewrc
# guvcview configuration file for /dev/video0

version='1.5.3'
# Thread stack size: default 128 pages of 64k = 8388608 bytes
stack_size=8388608
# video loop sleep time in ms: 0,1,2,3,...
# increased sleep time -> less cpu load, more droped frames
vid_sleep=0
# capture method: 1- mmap 2- read
cap_meth=1
# video resolution 
resolution='160x120'
# control window size: default 480x700
windowsize='512x700'
#vertical pane size
vpane=578
#spin button behavior: 0-non editable 1-editable
spinbehave=0
#Default action. 0 for picture, 1 for video.
default_action=0
# mode video format 'yuvy' 'yvyu' 'uyvy' 'yyuv' 'yu12' 'yv12' 'nv12' 'nv21' 'nv16' 'nv61' 'y41p' 'grey' 'y16 ' 's501' 's505' 's508' 'gbrg' 'grbg' 'ba81' 'rggb' 'rgb3' 'bgr3' 'jpeg' 'mjpg'(default)
mode='rgb3'
# frames per sec. - hardware supported - default( 25 )
fps='1/1'
#Display Fps counter: 1- Yes 0- No
fps_display=0
#auto focus (continuous): 1- Yes 0- No
auto_focus=0
# bytes per pixel: default (0 - current)
bpp=32
# hardware accelaration: 0 1 (default - 1)
hwaccel=1
# video compression format: 0-MJPG 1-YUY2/UYVY 2-DIB (BMP 24) 3-MPEG1 4-FLV1 5-MPEG2 6-MS MPEG4 V3(DIV3) 7-MPEG4 (DIV5)
vid_codec=0
# avi file max size (MAX: 1992294400 bytes)
avi_max_len=1992294400
# Auto Video naming (ex: filename-n.avi)
vid_inc=0
# sound 0 - disable 1 - enable
sound=1
# sound API: 0- Portaudio  1- Pulseaudio
snd_api=0
# snd_device - sound device id as listed by portaudio (pulse uses default device)
snd_device=0
# snd_samprate - sound sample rate
snd_samprate=0
# snd_numchan - sound number of channels 0- dev def 1 - mono 2 -stereo
snd_numchan=0
#snd_numsec - video audio blocks size in sec: 1,2,3,.. 
# sound delay in nanosec - delays sound by the specified amount when capturing video
snd_delay=0
# Sound Format (PCM=1 (0x0001) MP2=80 (0x0050)
snd_format=80
# video filters: 0 -none 1- flip 2- upturn 4- negate 8- mono (add the ones you want)
frame_flags=0
#on screen display flags (VU meter)
osd_flags=0
# Auto Image naming (filename-n.ext)
image_inc=0
# Image capture Full Path
image_path='/home/pol/Image.jpg'
# Video capture Full Path
video_path='/home/pol/capture.avi'
# control profiles Full Path
profile_path='/home/pol/default.gpfl'
# audio codec properties (remove for default values
acodec_bit_rate=160000
# video codec (MJPG) properties (remove for default values
vcodec_bit_rate=0
vcodec_fps=0
vcodec_monotonic_pts=0
vcodec_qmax=0
vcodec_qmin=0
vcodec_max_qdiff=0
vcodec_dia=0
vcodec_pre_dia=0
vcodec_pre_me=0
vcodec_me_pre_cmp=0
vcodec_me_cmp=0
vcodec_me_sub_cmp=0
vcodec_last_pred=0
vcodec_gop_size=0
vcodec_qcompress=0.00
vcodec_qblur=0.00
vcodec_subq=0
vcodec_framerefs=0
vcodec_mb_decision=0
vcodec_trellis=0
vcodec_me_method=0
vcodec_mpeg_quant=0
vcodec_max_b_frames=0
vcodec_num_threads=0
vcodec_flags=0

On 08/03/2012 02:06 PM, polbrian wrote:
> and should work out of the box, but it doesn’t,

i probably can’t help, but while you are waiting for a real guru with
help, you might entertain yourself with:

did the device come with instructions and software? (a quick look via
google i find “Software CD”, “software easy to install”, and “User
manual” included in the sales) perhaps you have linux software to load…

OR, maybe the provided Window’s works fine if in WINE…

or, perhaps if you got that “works out of the box…with linux”
guarantee in writing, you will have no trouble returning it…

or, maybe you have to make a new udev rule (i sure can’t help with that)…

last: i can’t connect to the forums <http://paste.opensuse.org/71648095>
to see if you are new here, or not: if you are: WELCOME and sorry i
can’t be more help…

if not new: still sorry i can’t help more!!


dd

Voltcraft are not helpful to non-MS users.
My trouble may stem from ignorance (had to install or configure something and didn’t), otherwise there is a bug… at least in
http://en.opensuse.org/HCL:Web_cameras
as I dutifully got the device ID from lsusb and found it in Linux UVC driver & tools

pol

Some progress.
After trying, unsuccessfully, to access the hardware through wine and the installation software for windows, and a number of plug-unplugging from various usb ports, I succeeded streaming, though only in 160x120:


myself@myplace > guvcview --size=160x120
guvcview 1.5.3
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
              [IRRELEVANT AUDIO STUFF]
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started
video device: /dev/video0 
Init. Digital_Camera (location: usb-0000:00:1a.0-1.4)
{ pixelformat = 'MJPG', description = 'MJPEG' }
{ discrete: width = 640, height = 480 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/5, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/20, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/15, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/4, 
{ pixelformat = 'RGB3', description = 'RGB3' }
{ discrete: width = 640, height = 480 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ pixelformat = 'BGR3', description = 'BGR3' }
{ discrete: width = 640, height = 480 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ pixelformat = 'YU12', description = 'YU12' }
{ discrete: width = 640, height = 480 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ pixelformat = 'YV12', description = 'YV12' }
{ discrete: width = 640, height = 480 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 320, height = 240 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 160, height = 120 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 176, height = 144 }
        Time interval between frame: 1/30, 1/15, 1/1, 
{ discrete: width = 352, height = 288 }
        Time interval between frame: 1/30, 1/15, 1/1, 
vid:093a 
pid:2900 
driver:uvcvideo
checking format: 1196444237
VIDIOC_G_COMP:: Invalid argument
   compression control not supported
fps is set to 1/30
drawing controls

fps is set to 1/30
Checking video mode 160x120@32bpp : OK 
     **Setting new resolution in GUI FAILS**]
setting new resolution (640 x 480)
checking format: 1196444237
VIDIOC_G_COMP:: Invalid argument
   compression control not supported
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON - Unable to start capture: No space left on device
Checking video mode 640x480@32bpp : OK 
libv4l2: error turning on stream: Device or resource busy
VIDIOC_STREAMON - Unable to start capture: Device or resource busy
libv4l2: error turning on stream: Device or resource busy
VIDIOC_STREAMON - Unable to start capture: Device or resource busy
     **Quit in GUI**]
write /root/.guvcviewrc OK
free controls
cleaned allocations - 100%
Closing portaudio ...OK
Closing GTK... OK
[12675.890921] usb 1-1.4: new full speed USB device number 14 using ehci_hcd
[12676.096548] usb 1-1.4: New USB device found, idVendor=093a, idProduct=2900
[12676.096569] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[12676.096574] usb 1-1.4: Product: Digital_Camera
[12676.096577] usb 1-1.4: Manufacturer: PixArt Imaging Inc.
[12676.102342] uvcvideo: Found UVC 1.00 device Digital_Camera (093a:2900)
[12676.117069] input: Digital_Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input25
myself@myplace > dmesg | tail -n 7
[12675.890921] usb 1-1.4: new full speed USB device number 14 using ehci_hcd
[12676.096548] usb 1-1.4: New USB device found, idVendor=093a, idProduct=2900
[12676.096569] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[12676.096574] usb 1-1.4: Product: Digital_Camera
[12676.096577] usb 1-1.4: Manufacturer: PixArt Imaging Inc.
[12676.102342] uvcvideo: Found UVC 1.00 device Digital_Camera (093a:2900)
[12676.117069] input: Digital_Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input25

VIDIOC_STREAMON - Unable to start capture: Device or resource busy
libv4l2: error turning on stream: Device or resource busy
lead to many forum webpages, but none that has been any use (there is no other webcam on my computer).

As a conclusion,

  • The documentation says that the endoscope supports USB 1.1; that sets the maximum transfer rate to 12,000,000 bps.
  • hwinfo reports this USB version and transfer rate for the device.
  • The better resolution of the set that uses no more than this rate at 30 fps is 160x120 (raw data, 8bits per pixel single CCD).

Somehow Windows software must negociate a transfer rate of 73,728,000 bps to get a 640x480 30 fps picture.

Is there a way to have Linux do the same?

I am not experienced in it . But I suggest that you can get help from web. Endoscope that are based on usb 1.1 is well worked.

equipment

If you have this type type problem then you firstly check that it’s a hardware or software problem. I haven’t well knowledge about this . You also get help from web and any other endoscope repair expert.

endoscope repair parts