Server on Raspbery Pi?

I’ve been using BlueCherry for some years now on a Minix NEO Z83-4 “MiniPC” running Ubuntu, with several IP cameras, and it has worked well.

Maybe it’s a silly question, but the new Raspberry Pi 4 is more capable than previous devices, with true Gb ethernet and USB3. Has anyone tried to run the BlueCherry server on a Pi?
Also, could it use the Raspberry Pi’s own camera?

It is theoretically possible to run the Bluecherry server on Raspberry Pi boards, but there are no official builds for Raspberry Pi hardware.

i was thinking of doing something like that myself
but when i try on an older RPI board … i got compile errors

but waiting on the RPI4 to come and i will have a look again

but also try looking at low power intel SOC board …
they cost twice as much as the RPI4 but its just a simple installation job

got my RPI4 … will start to work on getting the code to compile and see how it goes … will post later on today with what is happening

How are things going?


I’d also be interested in hearing if it worked out. Yesterday evening I spent few hours with it and was able to get an installation package built. After fixing one compilation issue and doing various changes to the Debian dependency configuration files, I was able to create an installation package.

Eventually I got stuck in the postinstall script database creation phase. I did this using JuiceSSH on my tablet so I don’t have any logs to attach right now but it was something about the database schema validation. I noticed it had been able to create a database but apparently something didn’t go as it should.

I might be able to work around the issue but without no prior experience of using or installing Bluecherry but I have no idea if it’s realistic to expect it to work even if I’d get pass the issue.

I would be dying to get this working as I bought a Raspberry Pi 4 specifically for the purpose of using it as a DVR/NVS.

My initial plan was to install Shinobi as it looked promising but I got nowhere trying to install it. Then I read some comments of someone having success with Xeoma so I gave it a go. I did get it running to some extent but something about it made me uncomfortable in paying >100€ for the license. Then I ran into various people recommending Bluecherry and here I am.

Please provide logs when available, I’ll see what we can do.

Thanks! I most certainly will. It might take until the weekend before I find the time though.

Quick update: I had some spare time a few days ago and initially planned on logging the output of the installation process but instead ended up investigating the problem further. I ran some of the postinstall scrips manually and if I remember correctly, added some apache2 configurations settings manually.

In the end I was able to get the web admin interface running but had a red “Server process stopped.” error on the sidebar.

I believe it might have something to do with what’s in the mysql logs:

$ sudo tail /var/log/mysql/error.log
2019-09-28 15:12:08 1030 [Warning] Aborted connection 1030 to db: 'bluecherry' user: 'bluecherry' host: 'localhost' (Got an error reading communication packets)

There’s nothing in Bluecherry logs:

$ sudo tail /var/log/bluecherry.log

I am able to login to mysql with the bluecherry credentials on the command line so maybe this is relates to the different php/mysql versions?

Worth noting is that during the postinstall script the database verify step fails (only end part shown):

+  `disabled` tinyint(1) NOT NULL DEFAULT 0,
   PRIMARY KEY (`id`)
 /*!40101 SET character_set_client = 
@saved_cs_client */;
Database doesn't match reference schema

I have done all my modifications over a git cloned version of the repo so I can push them to a fork later on if needed. At this point I don’t have further info to provide as I’m busy this weekend.

Have you had time to look into this?

I was able to get Bluecherry server to compile on a Raspberry Pi 3 running Raspbian Buster. It doesn’t support hardware accelerated video since the Pi, AFAIK, doesn’t accelerate via VA-API but instead has acceleration via OpenMAX (OMX). I know ffmpeg can do accelerated encode / decode via OMX on the Pi, but is there any way to get Bluecherry using ffmpeg for video decode? In the settings menu, the only options are VA-API accleration, but I was thinking ffmpeg was used for video decode? In any case, on the Pi 3 I think it’s probably not quite fast enough without the acceleration. I seemed like continuous capture worked fine for my one camera, but using motion-based recording seemed to result in very choppy video. top reports CPU usage is always around 103%, so it’s probably maxing out one of the cores.

Anyway, the changes I had to make to get things going:

  1. In lib/bc-key.cpp, change the static const char base32_charset_reverse[] to be type static const signed char instead. The compiler in Buster won’t compile code that assumes char is signed, so you have to explicitly state it.
  2. In server/BCMK, add -lopencv_highgui to the LDFLAGS. The newer OpenCV on Buster won’t link correctly unless this is linked too.
  3. In scripts/, add a case for raspbian, since the existing debian case won’t match because the Pi distribution calls itself raspbian instead. I made this case be basically empty (it just sets ADDITIONAL_PKGS=""). The linux-image and linux-headers packages installed by the Debian case do not seem to be needed on the Pi, and they in fact seemed to cause issues with the Raspbian install when I did install them.
  4. In debian/, remove i965-va-driver from the list of depends. This package isn’t available on Pi and doesn’t seem to actually be needed?

The above changes, in addition to the installation of some dev packages (I honestly can’t remember which right now, but most of them are fairly self explanatory from what I remember), get Bluecherry to compile. However, it will fail during install because it will claim the database schema doesn’t match while creating the database. After inspection, it appears that the way the schema is printed out by the command line MySQL client is different in the MySQL version in Buster. For example, one part of the schema is expected to look like this:

rtsp_rtp_prefer_tcp tinyint(1) NOT NULL DEFAULT 1,

but it actually looks like this

rtsp_rtp_prefer_tcp tinyint(1) NOT NULL DEFAULT ‘1’,

(note the single quote around 1). Since the schema comparison is done using a simple diff, the installation script will think that the database schema is wrong. My solution to this was to dump the database schema after the installer failed, verify that the schema is actually correct, and replace the file misc/sql/schema_mysql.sql with a dump of the schema created by the new version of MySQL. I then rebuilt Bluecherry and the install succeeded.