Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blank screen on ARM-based server #93

Closed
Mayzol opened this issue Oct 2, 2021 · 19 comments
Closed

Blank screen on ARM-based server #93

Mayzol opened this issue Oct 2, 2021 · 19 comments
Labels
bug Something isn't working

Comments

@Mayzol
Copy link

Mayzol commented Oct 2, 2021

Problem: The part where browser should appear is completely blank on arm-chromium and arm-firefox
Operating System: Linux 5.11.0-1019-oracle #20~20.04.1-Ubuntu SMP aarch64
GPU: No
Tested browsers: Google Chrome, Microsoft Edge, Firefox

I also tried different codecs (VP8, VP9, H264) and tried to change STUN server but that didn't help
Tried with and without nginx - still no luck

mbattista's neko behaves the same way

docker-compose.yaml

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:arm-firefox"
    restart: "unless-stopped"
    # increase on rpi's with more then 1gb ram.
    shm_size: "2gb"
    ports:
      - "15824:15824"
      - "59000-59100:59000-59100/udp"
    # this is important since we need a GPU for hardware acceleration alternatively mount the devices into the docker.
    privileged: true
    environment:
      NEKO_SCREEN: '1280x720@30'
      NEKO_PASSWORD: 'neko'
      NEKO_PASSWORD_ADMIN: 'admin'
      NEKO_BIND: :15824
      NEKO_EPR: 59000-59100
      NEKO_ICELITE: 'true' # changing this didnt help

some logs from neko:
https://gist.github.com/Mayzol/f646e37bf7a837795faa3086ed5c4749

oogoogaga

@m1k1o
Copy link
Owner

m1k1o commented Oct 2, 2021

That is because arm- builds were optimized for Raspberry PI, and they try to use raspberry PI GPU. If you are running it on ARM based system other than raspberry PI, it won't work.

Your logs say, that you use video_codec=VP8 but pipeline is ximagesrc display-name=:99.0 use-damage=0 show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! video/x-raw,framerate=30/1,format=NV12 ! v4l2h264enc extra-controls=\"controls,h264_profile=0,video_bitrate=1250000; what is H264.

Additionally, ARM based images are not automatically updated. That needs to be refactored/set up. AFAIK GitHub does not provide ARM based runner, it needs to be self hosted.

I admit, naming is confusing and unclear, it needs to be changed.

@Mayzol
Copy link
Author

Mayzol commented Oct 2, 2021

So, I need to change pipeline and try to set it up myself in order to work?

@m1k1o
Copy link
Owner

m1k1o commented Oct 2, 2021

Yes, you can overwrite it with:

    environment:
      NEKO_VP8: 1
      NEKO_H264: 0
      NEKO_VIDEO: "ximagesrc display-name=%s show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! vp8enc target-bitrate=3072000 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=18432 buffer-initial-size=12288 buffer-optimal-size=15360 keyframe-max-dist=180 min-quantizer=3 max-quantizer=40 ! appsink name=appsink"

edit: don't use exact display name but %s

@m1k1o
Copy link
Owner

m1k1o commented Oct 2, 2021

I recommend removing these two lines:

ENV NEKO_H264=1
ENV NEKO_VIDEO='ximagesrc display-name=%s use-damage=0 show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! video/x-raw,framerate=30/1,format=NV12 ! v4l2h264enc extra-controls="controls,h264_profile=0,video_bitrate=1250000;" ! h264parse config-interval=3 ! video/x-h264,profile=baseline,stream-format=byte-stream'

And then build new, fresh arm based images.

cd .m1k1o
./build arm-base
./build arm-firefox

That is the best way how to get fresh browser version and use default pipelines, not Raspberry Pi specific.

@Mayzol
Copy link
Author

Mayzol commented Oct 2, 2021

I can see remote mouse pointer now =)

yoink

And also some strange errors while building firefox
It didnt assign tags for docker image :/

arm-base
joe

arm-firefox
b

m1k1o added a commit that referenced this issue Oct 3, 2021
@m1k1o
Copy link
Owner

m1k1o commented Oct 3, 2021

I removed raspberry pi specific environment variables and changed debian to official image. Although, it seems like it lost DRM widevine support, what would need to be restored later.

Image tags arm-base, arm-firefox, arm-chromium have been updated as well.

@mbattista
Copy link
Contributor

If you want, I can offer my rpi3 for the github actions and weekly builds.

Also I can look into the libwidevinecdm0 problems from your latest commit.

@m1k1o
Copy link
Owner

m1k1o commented Oct 5, 2021

@mbattista yes, sure, that would be great.

@m1k1o m1k1o added the bug Something isn't working label Oct 24, 2021
@lanmower
Copy link

lanmower commented Nov 4, 2021

Hey there @m1k1o, go to oracle.com and register, they give you a free armv8 server with 24gb ram, can you get it working on that platform nicely?

@m1k1o
Copy link
Owner

m1k1o commented Nov 4, 2021

@lanmower that looks nice, unfortunately they want credit card even for free account.

UPDATE: I have registered anyway, will try to setup arm pipeline.

@lanmower
Copy link

lanmower commented Nov 5, 2021 via email

@lanmower
Copy link

lanmower commented Nov 5, 2021 via email

@m1k1o
Copy link
Owner

m1k1o commented Nov 6, 2021

I was able to set ut up and it seems to work.

@lanmower
Copy link

lanmower commented Nov 7, 2021 via email

@lanmower
Copy link

Armv8 server (arm64) existing tags deliver blank screen.
I'm willing to provide access to an armv8 server for debug.
The servers are free for life and available on oracle.com
No need for credit card, they can verify your ID using a debit card
or did for me at least.

@m1k1o
Copy link
Owner

m1k1o commented Nov 18, 2021

I think the arm- images are only for armv7. The "normal" tags should work for armv8. I also got that server from oracle and I will be trying on that. Maybe we need to switch to multiarch docker builds, e.g. https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/

If not using the existing images, then at least building it directly on armv8 should work.

UPDATE: Build seems to be working, only needed to replace node:14-bullseye-slim with node:14-bullseye in Dockerfile.

@lanmower
Copy link

lanmower commented Nov 26, 2021 via email

@m1k1o
Copy link
Owner

m1k1o commented Nov 28, 2021

Closing, as original issue addressing black screen for arm has been fixed, and new one addressing multiarch builds has been created.

@lanmower
Copy link

lanmower commented Dec 22, 2021 via email

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants