balena-dash for a TV video call device on RPI3

Hello,

I wanted to follow this tutorial :

https://www.balena.io/blog/put-friends-and-loved-ones-on-the-big-screen-with-this-instant-video-call-project/

… would be really helpful for my Grandpa.

The tutorial indicates that the Raspberry Pi 4 is required, but I only have a RPi 3b+.

So I followed the tutorial, but I selected Rpi3 for the device., and I could achieve all steps successfully until I have to grant camera and microphone permissions.
I don’t receive any popup asking it, and when I try activate the CONFIG_MODE=1, I don’t see more things on screen of the WPE browser (no URL bar, no navigation buttons, no place to activate or inactivate cam and microphones.

Reading some topics, I may have understood that balenaDash works with chromium on RPI4, while it is WPE on RPi3. Is that the problem (there is maybe no Confog_mode for WPE in kiosk??)

If it is the case, do someone know a workaround (replace WPE with chromium ? manually editing a file to enable camera and microphone in WPE ? …)

I tried to find some config files, but everything seems to be in dockers files… I don’t know anything about how to edit it.

Any suggestion would be welcome.

Thank you everybody for reading.

mathojojo

Hi there, yes the issue is with WPE, chromium is required to get those permissions to work. You can try running Pi3b+ on our 64bit OS, but performance may be unusable.

Thank you for your answer, I just gave the 64bit OS a try…

The original youtube video wasn’t launched, and when I changed it with the one of meet.jit.si, it didn’t work neither (Still white screen with the green cube, nothing else).

And if I open the kiosk console, ps command give me WPE, not chromium.

bash-4.4# ps
  PID USER       VSZ STAT COMMAND
    1 root      2436 S    {wpe-init} /bin/sh /wpe-init
   12 root      2580 S    udevd
   27 root      780m S    ./tohora 8080 cog
   57 root      211m S    cog https://meet.jit.si/opavonbern
   58 root      2204 S    tail -f /dev/null
   93 root      162m S    /usr/libexec/wpe-webkit-1.0/WPENetworkProcess 5 14
 1720 root      2436 S    /bin/bash
 2053 root      134m S    /usr/libexec/wpe-webkit-1.0/WPEWebProcess 562 15
 2058 root      2292 R    ps

Hey, is the application you’ve deployed this to an rpi3 application? If that’s the case it would explain why wpe is still being installed, as we use device-type specific Dockerfiles here: https://github.com/balenalabs/balena-dash/tree/master/kiosk. If you redeploy this to a pi4-64 application, it should install chromium. You would be able to create a pi4 application and install the pi3-64 balenaOS image from the add device screen. Let me know how you get on.

Hi, Thank you

I wanted to try it yesterday, but I was not sure if it would eventually brick my RPi3 to select RPi4 application.

So… I did, and yes know I have Chromium, and I can reach the config mode, and allow camera and microphone.
But as @codewithcheese said, performance are really poor, almost unusable…

Is there anything I can edit to have little better performance, or is it totally impossible ?

Thank you again for your support.

Hey @mathojojo one of the maintainers just got back to us and mentioned that they previously hadn’t tested on the pi3 B+, mostly due to their guess that it wouldn’t be able to handle the load. They did a test and found, as you did, that is very un-usable unfortunately. Apparently the core issue is that we haven’t been able to find a Video Call platform (i.e. like Jitsi) that makes use of the H264 video decoding which is the one that the rpi3 would have the best performance at decoding, so it ends up using hammering device and the little pi just can’t handle the load.

So unfortunately it sounds like for now it might not be feasible until we can find a way to force jitsi to work with H264 ( it seems like a few people have been trying: https://github.com/jitsi/jitsi-videobridge/issues/707 )

Ok,

It’s a pity, I will have to find another use for this RPi 3B+ then :slight_smile:
And for this project, I just ordered a RPi 4 kit with 2Gb memory…

Thank you again for all your very active support.

Hi I received my RPi 4 and could have my propject working. Jitsi meeting is working fine.

As I said, I followed this project based on balenadash : https://www.balena.io/blog/put-friends-and-loved-ones-on-the-big-screen-with-this-instant-video-call-project/

I set the LAUNCH_URL variable for jitsi meeting. But I would like to be able to switch from kiosk to photos… so I can share photos as well with my grandpa.

I thought it might be possible with an existing variable, but witch one ?

Thank you for the help.

Hi again,

Glad to hear that you are up and running with Jitsi!

To show some photos, you can use the GALLERY_URL. More details here:

Phil

Hey @phil-d-wilson,

Thank you, I’m learning slow but for sure !

I already saw the link when I did some search about it, and I tried to set my google photo url. It works, I can see in the balena web interface that the photo service scans photos. But on my RPi, the interface is always showing jitsi (kiosk service). There must be something to do (change a variable?) to switch to another service like the photo service.

I supposed that services are all running on differrents tty, so I tried chvt 1 for tty1 to chvt 9 for tty9… I found out that kiosk (with Jitsi) is running on tty3, but couldn’t find another service on other tty. But maybe I supposed bad :stuck_out_tongue:

So any idea ?

Hi @mathojojo - very glad to hear you’re making progress!

As it happens, there’s only one application in balena Dash that uses the monitor, and that’s the kiosk application; it’s the last line of the startup script that gets Chromium to use the monitor. The photo application, by contrast, is a node app which acts as a web server – it doesn’t use the monitor at all. Thus, there aren’t other ttys to switch to…it’s just the one, running Chromium.

However, there are ways to change the URL displayed by the kiosk. One way is to change the LAUNCH_URL device service variable; doing so on the dashboard will force a restart of the kiosk app. Another, probably more convenient way, is to change the URL through the exposed web interface for the kiosk itself. If you visit http://[ip address of your device]:8080, you’ll see a form that asks you for a URL. Fill that in (being sure to include http:// or https://, as appropriate, at the beginning!), click “Show URL”, and that will change what the kiosk displays on the monitor. (You can even use command-line tools like curl to do this.)

On my device, I’m able to change the URL displayed on the kiosk to be the URL for the photo application:

  • Visit http://[ip address of my device]:8080
  • For URL, add http://[ip address of my device]:8888, and hit submit. EDIT: You can use http://photos:8888...even simpler!
  • And now, the photo application shows up on the screen.

Give it a try and let us know how it works out for you.

All the best,
Hugh

Hello @saintaardvark, thank you for the time trying to help me.

I understand now a little better why I couldn’t have photos. As you mentioned it would be much more convenient to type the URL directly in the KIOSK web interface, but the RPI will be installed at my Grandpa’s house (without Config mode, without keyboard). He’s 96 years old, I can’t ask him to do something to change the mode :slight_smile:

So I will have to change it for him and I will probably do it through the balenacloud dashboard. I’m even thinking that finally, the easier (but not best quality), would be to share my own desktop with Jitsi, to show photos.

And now, a last problem is emerging as I finally received my webcam Papalook af925. This device is working fine on my computer (Ubuntu 18.04). On balenaDash, the video is working fine, but I can’t have the sound working (“Audio error : could not start audio source” can I read on Chromium).

You can see below some lines of the dmesg command when I plug the webcam :

[  255.027211] usb 1-1.2: new high-speed USB device number 4 using xhci_hcd
[  255.309001] usb 1-1.2: New USB device found, idVendor=1bcf, idProduct=2284, bcdDevice= 0.05
[  255.317511] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  255.324989] usb 1-1.2: Product: FULL HD webcam
[  255.329705] usb 1-1.2: Manufacturer: AONI ELECTRONIC CO.LTD
[  255.335383] usb 1-1.2: SerialNumber: 20190322001
[  255.608882] uvcvideo: Found UVC 1.00 device FULL HD webcam (1bcf:2284)
[  255.659590] uvcvideo 1-1.2:1.0: Entity type for entity Extension 3 was not initialized!
[  255.670900] uvcvideo 1-1.2:1.0: Entity type for entity Processing 2 was not initialized!
[  255.679157] uvcvideo 1-1.2:1.0: Entity type for entity Camera 1 was not initialized!
[  255.687708] input: FULL HD webcam: FULL HD webcam as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input5
[  255.703331] usbcore: registered new interface driver uvcvideo
[  255.709373] USB Video Class driver (1.1.1)
[  255.751827] usb 1-1.2: Warning! Unlikely big volume range (=4096), cval->res is probably wrong.
[  255.760708] usb 1-1.2: [5] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
[  255.777082] usbcore: registered new interface driver snd-usb-audio 

I see a warning. Can it be the reason of the problem ? By the way, the audio device seems to be registered at the last line of the dmesg…

Thank you again for all your support.

mathojojo

Hello,

I tried with the last raspbian image with GUI. The behaviour is exactly the same with the webcam :

  • Chromium can access the Video
  • Chromium can’t access the Microphone

As I mentionned the audio microphone seems to be redistered, but just with a warning with the volume range.
As raspbian has a GUI interface to access audio inputs, I used it to decrease a little the microphone input volume.

And TADA… it works. Whe I restarted chromium, it could make use of the microphone.

Now, how can I do the same with my BalenaDash. How can I decrease/increase the microphone input volume ? Is there any way? maybe by editing a file ? What file ?

Thank you, i think I’m really close to the final solution :smiley: