Forums/Bluecherry BC- series driver support/Hardware compression MPEG-4 / H.264 driver

Answered

Can't get BC-H16480A to work with Zoneminder.

Thossaporn Phetruphant
asked this on September 08, 2011 21:59

Hi All,

I bought BC-H16480A  and drop in Ubuutu box. Install latest solo6x10 driver from Bluecherry's git and Zoneminder 1.25.0.

Here is the set :

uname -a
Linux zoneminder 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

lspci
06:05.0 Multimedia video controller: Bluecherry BC-H16480A 16 port H.264 video and audio encoder / decoder

lsmod | grep solo
solo6x10               75131  3
snd_pcm                96625  3 snd_hda_intel,snd_hda_codec,solo6x10
videobuf_dma_sg        19307  1 solo6x10
v4l2_common            17647  1 solo6x10
videodev               82052  4 solo6x10,v4l2_common
videobuf_dma_contig    13464  1 solo6x10
videobuf_core          26135  3 solo6x10,videobuf_dma_sg,videobuf_dma_contig
snd                    67382  16 snd_hda_codec_analog,snd_hda_intel,snd_hda_codec,snd_hwdep,solo6x10,snd_rawmidi,snd_pcm,snd_seq,snd_timer,snd_seq_device

I've tried xawtv and ffplay. Its show real time video on screen and

ffplay -f video4linux2 /dev/video2
FFplay version 0.6.2-4:0.6.2-1ubuntu1, Copyright (c) 2003-2010 the Libav developers
  built on Mar 22 2011 15:55:04 with gcc 4.5.2
  configuration: --extra-version=4:0.6.2-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  WARNING: library configuration mismatch
  libpostproc configuration: --enable-gpl --enable-shared --enable-pthreads
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[video4linux2 @ 0x22d4d90]Estimating duration from bitrate, this may be inaccurate
Input #0, video4linux2, from '/dev/video2':
  Duration: N/A, start: 1315539772.951659, bitrate: 0 kb/s
    Stream #0.0: Video: mjpeg, yuvj420p, 352x288, 0 kb/s, 25 tbr, 1000k tbn, 25 tbc
[ffplay_output @ 0x22d7db0]auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x22dac40]w:352 h:288 fmt:yuv420p
1315539780.19 A-V:  0.000 s:6.0 aq=    0KB vq=   76KB sq=    0B f=0/183

I'm pretty sure that ZMC can access to all video device from this:
ls -ltr /dev/video*
crwxrwxrwx+ 1 root video 81,  9 2011-09-08 16:28 /dev/video9
crwxrwxrwx+ 1 root video 81, 11 2011-09-08 16:28 /dev/video11
crwxrwxrwx+ 1 root video 81, 10 2011-09-08 16:28 /dev/video10
crwxrwxrwx+ 1 root video 81, 15 2011-09-08 16:28 /dev/video15
crwxrwxrwx+ 1 root video 81,  7 2011-09-08 16:28 /dev/video7
crwxrwxrwx+ 1 root video 81,  6 2011-09-08 16:28 /dev/video6
crwxrwxrwx+ 1 root video 81, 16 2011-09-08 16:28 /dev/video16
crwxrwxrwx+ 1 root video 81, 13 2011-09-08 16:28 /dev/video13
crwxrwxrwx+ 1 root video 81, 12 2011-09-08 16:28 /dev/video12
crwxrwxrwx+ 1 root video 81,  8 2011-09-08 16:28 /dev/video8
crwxrwxrwx+ 1 root video 81, 14 2011-09-08 16:28 /dev/video14
crwxrwxrwx+ 1 root video 81,  0 2011-09-08 16:28 /dev/video0
crwxrwxrwx+ 1 root video 81,  3 2011-09-08 18:25 /dev/video3
crwxrwxrwx+ 1 root video 81,  4 2011-09-08 18:25 /dev/video4
crwxrwxrwx+ 1 root video 81,  5 2011-09-08 18:25 /dev/video5
crwxrwxrwx+ 1 root video 81,  1 2011-09-09 10:42 /dev/video1
crwxrwxrwx+ 1 root video 81,  2 2011-09-09 10:42 /dev/video2

I've tried this also, all combination between this:

  • source type : local, file, ffmpeg
  • Device Path : /dev/video0-16
  • Device Channel : 0-31
  • Device Format : bla bla...
  • Capture Palette : YUYV, etc
  • W and H of picture

 

In Zoneminder, The source alway be RED and no image in monitor screen.

log file 'zmc -d /dev/videoX' exited abnormally, exit status 255

This problem never happen with the 878 chip capture card that we use before get Bluecherry on board.

 

Comments

User photo
Spoonface

I can't get the BC-H16480A to work with Zoneminder either.  Have tried multiple versions of Fedora, both x86_64 and i386/686.  The card is recognized (after patching the drivers from the git repo with some of the patches posted by other users), and I can use ffmpeg to capture the video from /dev/video1-16; so I know that the card and cameras all work, but Zoneminder shows the source as RED and no way to see any video stream.  The Zoneminder log shows:

zmwatch    4285    ERR    Can't get shared memory id '7a6d0003', 3: No such file or directory    zmwatch.pl    
zmfix    8937    ERR    Can't stat /dev/video1: Permission denied    zmfix.cpp    86

I have tried multiple versions of Zoneminder, both Fedora yum installed and compiled from source.  Nothing seems to work.

September 16, 2011 15:34.
User photo
Spoonface
Ajax_loader_small Answer

Just got my system working!  I was having problems getting the service started via the Zoneminder "state" link at the top center of the Zoneminder Console web screen.  It turns out that even though I thought selinux was disabled, it was in Enforcing mode (check using "getenforce", set using "setenforce").  Setting to Permissive mode allowed the service to start.

Next, the camera settings; I'm using the cameras from one of those Costco Q-See systems.  Not the best quality, and the software that runs on the original monitor system makes it a total piece of crap, but it was a cheap entry-level system that is pretty reliable and has IR illuminators on each camera.  But I digress...

I think that ideally, I'd be using Source Type: Local (General Tab) with Device Path: /dev/video1 (Source Tab), and /dev/video2, /dev/video3, ... for each additional camera.  I couldn't get this Source Type to work no matter which combination of Device Format, Capture Palette, ...  I even know which settings to use from the output of zmu and v4l2-ctl; doesn't matter, didn't work (source showed RED on the Zoneminder Console screen).

What did work, was to use Source Type: Ffmpeg, with the same Device Paths: /dev/video1, /dev/video2, ...

The video quality isn't perfect, and I seem to be getting a frame rate of around 15 fps on each of the cameras (I think I should be able to get at least 25 fps).  May be the result of going through an extra ffmpeg software process instead of using the video right from the capture card...?  I'm hoping that this is a temporary configuration and that a future release of either H16480A firmware or Zoneminder will allow the "Local" Source Type to be used.

But I'm happy to be where I am considering the number of hours that I've put into this (... typical Linux project :)

September 17, 2011 12:03.
User photo
Curtis Hall
Bluecherry

The Zoneminder forums are currently down, but when they come back up search for 'bluecherry' and 'mjpeg'.  There was a patch that was added to Zoneminder that makes use of the mjpeg feed from the Bluecherry cards.  It might help increase frame rate, but sadly it does not make use of the encoded video.

September 17, 2011 18:20.
User photo
Curtis Hall
Bluecherry
Ajax_loader_small Answer
September 20, 2011 16:09.
User photo
Casey

Is any other configuration required? I'm using this card and switching to Ffmpeg in Zoneminder as the source as Spoonface suggests did not work for me. I assume I have the driver installed since I also have the Bluecherry DVR V2 beta installed. (could the two be conflicting with each other -- not that I'm running them both together, just that they are both installed).

September 24, 2011 17:15.
User photo
Spoonface

I'm running Fedora 14 (i386) with ZoneMinder 1.25.0.  I had a lot of problems with my system, starting with the LAN driver not being included with the OS (try installing/updating the LAN drivers, or anything for that matter, without a network :)  The bluecherry driver wouldn't compile right out of the git repo, and I know I had to patch it before it would compile and install.  Similarly, ZoneMinder wouldn't build from source and needed a patch.  I think I could have used yum to install zm and avoid this patch, but the yum repo doesn't have the latest version.

I'm not sure what "Bluecherry DVR V2 beta" is; is that supposed to replace ZoneMinder (monitor software)?

A couple of things that you could try for additional info:

  • lspci | grep -i bluecherry

(should show something like "##:##.# Multimedia video controller: Bluecherry BC-H16480A 16 port H.264 video and audio encoder / decoder", otherwise I think that your machine is not recognizing the PCIe card)

 

  • dmesg | grep -i solo

(should show a few lines of output containing "solo6x10", otherwise I think your driver is not installed correctly)

 

 

  • ls -la /dev/video*

(should show /dev/video0 through /dev/video16, otherwise might be another driver or card detection problem?)

 

If all of the above work as expected, try:

  • ffmpeg -i /dev/video1 test.mpg

which should start ffmpeg, grabbing the stream from camera 1 and save it to test.mpg.  Let ffmpeg capture for 10 or 20 seconds then press the 'q' key to stop it.  If the test.mpg file plays fine, then you know that your hardware & drivers are good and it's a software configuration problem.

September 26, 2011 17:10.