ZoidTechnology / PanelPlayer

A WebP player for Colorlight receiving cards.
6 stars 1 forks source link

No picture on card. Works fine with ledvision. #2

Open jannoke opened 1 month ago

jannoke commented 1 month ago

I get no reaction on the panel. I can see from tcpdump that packets are going out. How is it even meant to work on on multiple cards? Should I targer broadcast on specific mac address instead of default on code?

Running on rpi3 with : ./panelplayer -p wlan0 -w 32 -h 16 -b 10 -s ezgif-2-4f97098d37.webp

ZoidTechnology commented 1 month ago

You'll have to make sure you're using a Raspberry Pi with Gigabit Ethernet, as the receiving cards don't support other speeds. This means you'll need to use at least a Pi 3 B+. All the receiving cards appear to use the same MAC address, so it shouldn't need to be changed.

You'll want to make sure you're using the correct port when launching PanelPlayer. Brightness is specified between 0 and 255, so 10 could be a bit dark depending on the content and display you're using. Give this a try:

./panelplayer -p eth0 -w 32 -h 16 -s ezgif-2-4f97098d37.webp
jannoke commented 1 month ago

Hi,

Thanks. It was it. I added USB gigabit network adapter and it works fine now atleast on this small panel. For testing brightness even 1 is enough to use it for testing :)

For reference I also installed it on debian 12.5 virtualbox, but on compilation I got error: user@debian12-dev:~/panel/PanelPlayer# make mkdir ./build gcc -Wall -Werror -pthread -O3 -c source/colorlight.c -o build/colorlight.o gcc -Wall -Werror -pthread -O3 -c source/loader.c -o build/loader.o gcc -Wall -Werror -pthread -O3 -c source/main.c -o build/main.o source/main.c: In function ‘main’: source/main.c:309:33: error: ‘update’ may be used uninitialized [-Werror=maybe-uninitialized] 309 | update(width, height, buffer); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source/main.c:195:16: note: ‘update’ was declared here 195 | void (*update)(); | ^~~~~~ cc1: all warnings being treated as errors make: *** [makefile:22: build/main.o] Error 1

I gave a code to chatGPT and it fixed it. ` --- original_main.c +++ updated_main.c @@ -192,7 +192,7 @@ goto destroy_loader; }

I could add multiple netcards for each panel or use vlans yes, but I'm thinking can it be done in same network. Do I understand correctly that currently all controllers in the network would show same picture currently?

ZoidTechnology commented 1 month ago

Your compiler doesn't seem to realise update() is never used unless initialised. You should be able to remove -Wall -Werror from source/makefile as a fix.

Often Colorlight requires a packet that isn't a valid Ethernet frame. Some NICs/drivers appear to drop these frames. I wouldn't be surprised if some VM implementations also have trouble with them.

The entire image is broadcast over the network. When you configure a receiver in LEDVision you set its position and size. The receiver will then display that region of the image. Multiple receiving cards can be daisy chained or connected to a layer 2 switch. You might have issues using a switch that drops malformed packets or tries to do anything particularly fancy. Enabling port mirroring could be a workaround if you're using a switch that supports it.

Let me know how it goes - I only have a single receiving card so haven't been able to test with multiple yet.