Recently I built up a little Raspberry Pi 4B to use while I travel. I use it for:
- Built in wifi for my laptop and phone to connect to;
- An external USB WiFi dongle for connection to Hotel WiFi;
- A USB ethernet to connect to Hotel internet if wired is available;
- The built in ethernet for connecting to network equipment I’m working with;
- A 4 port USB serial adapter to provide serial console access into equipment;
This lets me use my laptop with Hotel internet without exposing my laptop directly to it :-) It also lets me talk to network equipment, either via ethernet or serial over WiFi.
I could use an AirConsole for the serial/ethernet bit. I could use a Mikrotik for the WiFi/Ethernet bit. I’ve done both of these in the past, but neither provides a general purpose compute environment that I can do my own things on - like updating this web site, or writing some 6502 code, and so on.
Anyways, I got this little Pi all set up at home. I had an HDMI monitor connected while I did that, even though I did most of the config over VNC once the initial install was done.
Fast forward a few days and I’m in a hotel. I fire up Chrome and OMFG it’s slow. Like glacially slow. Unusably slow. Many other apps are OK though.
A bit of Googling suggests that the Pi doesn’t enable hardware graphics acceleration when it has no HDMI monitor connected - and of course being in a hotel, I don’t! ..and nor do I want to.
So, the solution that worked for me:
- enable hdmi_force_hotplug=1
- Comment out dtoverlay=vc4-kms-v3d
- Comment out max_framebuffers=2
Reboot the Pi.
At this point VNC will work, but the resolution will be crazy low.
- Open a terminal
- sudo raspi-config
- Select “Display Options”
- Select “Resolution”
- Select the resolution you want to use in VNC.
- Select “VNC Resolution”
- Make sure that’s set to the resolution you pikcked above.
- Let it reboot
Note: I’m expecting that doing this will lock the display resolution used when an HDMI monitor is actually plugged in. If that’s a problem then perhaps this isn’t the right solution for you.
At this point VNC should be back to your preferred resolution, and apps like Chrome that were glacially slow before should be back to their snappy self.
An alternative approach is to disable hardware acceleration in Chrome’s settings, but that only “fixes” Chrome and not other applications that are similarly affected.