Skip to content

[Bug]: wavesharelcd1in9 display issue #492

@excodex

Description

@excodex

Hello Everyone,

I recently started playing with this project. Very cool and fun repo and thanks for recently updating this fork!

I had an unused SPI display in my inventory, I tought that would be perfect match for the Raspberry Pi Zero 2W.
After analyzing the display drivers, I found the one that I have on hand. — I bought it on AliExpress and I think it's not a genuine Waveshare branded display. Okay, I soldered the wires from the Pi's GPIO holes to the display and set the corresponding settings in the webui.

[ui.display]
enabled = true
rotation = 180
type = "wavesharelcd1in9"

After saving the modifications, I rebooted the Pi. Nothing happened for a while, but it came back to life.. displaying a white empty screen.

Image

I started to dig around to find the problem and here is my current status:

The display works and it is not damaged. I tested it. Downloaded the demo code from Waveshare's product page. I compiled the C code and ran it, the display is working.

Image

When I set the display type to wavesharelcd1in9, the webui became oversized and I had to scroll a lot more on the page to reach the buttons on the bottom. Strange.

I tried to gather more information, so I ran the pwnagotchi --debug as root over SSH.

...
[2026-01-30 01:07:41,725] [WARNING] [MainThread] : ui.fps is 0, the display will only update for major changes
[2026-01-30 01:07:41,732] [INFO] [MainThread] : initializing waveshare 1.9 inch lcd display
[2026-01-30 01:07:48,407] [DEBUG] [MainThread] : fix_services on_ui_update
[2026-01-30 01:07:48,410] [DEBUG] [MainThread] : gps_listener on_ui_update
[2026-01-30 01:07:48,412] [DEBUG] [MainThread] : wpa-sec on_ui_update
[2026-01-30 01:07:48,413] [DEBUG] [Thread-11] : wpa-sec.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,409] [DEBUG] [Thread-3] : fix_services.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,414] [DEBUG] [Thread-9] : gps_listener.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,415] [DEBUG] [MainThread] : memtemp on_ui_update
[2026-01-30 01:07:48,423] [DEBUG] [MainThread] : cache on_ui_update
[2026-01-30 01:07:48,424] [DEBUG] [Thread-14] : cache.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,426] [DEBUG] [Thread-31] : pwnagotchi.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,415] [DEBUG] [Thread-12] : memtemp.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,425] [DEBUG] [MainThread] : pwnagotchi on_ui_update
[2026-01-30 01:07:48,433] [DEBUG] [MainThread] : wigle on_ui_update
[2026-01-30 01:07:48,434] [DEBUG] [Thread-15] : wigle.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
[2026-01-30 01:07:48,437] [DEBUG] [MainThread] : ohcapi on_ui_update
[2026-01-30 01:07:48,438] [DEBUG] [Thread-17] : ohcapi.ui_update: (<pwnagotchi.ui.display.Display object at 0x7f4cd57380>,)
Exception in thread Renderer:
Traceback (most recent call last):
  File "/usr/lib/python3.13/threading.py", line 1043, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "/usr/lib/python3.13/threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pi/.pwn/lib/python3.13/site-packages/pwnagotchi/ui/display.py", line 331, in _render_thread
    self._implementation.render(self._canvas_next)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/home/pi/.pwn/lib/python3.13/site-packages/pwnagotchi/ui/hw/wavesharelcd1in9.py", line 42, in render
    self._display.ShowImage(canvas)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/home/pi/.pwn/lib/python3.13/site-packages/pwnagotchi/ui/hw/libs/waveshare/lcd/lcdhat1in9/LCD_1inch9.py", line 160, in ShowImage
    pix[..., [0]] = self.np.add(self.np.bitwise_and(img[..., [0]], 0xF8), self.np.right_shift(img[..., [1]], 5))
    ~~~^^^^^^^^^^
ValueError: shape mismatch: value array of shape (320,1) could not be broadcast to indexing result of shape (320,170,1)
[2026-01-30 01:07:48,756] [INFO] [MainThread] : Starting WebServer thread
[2026-01-30 01:07:48,762] [INFO] [MainThread] : pwnagotchi@55fe08be7128fcd16e15cd0efc51192c7dfc55efbdae2c068f9bbeeb7c57a317 (v2.9.5.4)
[2026-01-30 01:07:48,765] [DEBUG] [MainThread] : plugin 'Logtail' v0.1.0
[2026-01-30 01:07:48,773] [DEBUG] [MainThread] : plugin 'Grid' v1.1.0
[2026-01-30 01:07:48,785] [DEBUG] [MainThread] : plugin 'FixServices' v1.0.1
[2026-01-30 01:07:48,792] [DEBUG] [MainThread] : plugin 'SessionStats' v0.1.0
[2026-01-30 01:07:48,804] [DEBUG] [MainThread] : plugin 'UploadConvertPlugin' v1.0.0
[2026-01-30 01:07:48,816] [DEBUG] [MainThread] : plugin 'Webgpsmap' v1.4.0
[2026-01-30 01:07:48,823] [DEBUG] [MainThread] : plugin 'GPS' v1.0.0
[2026-01-30 01:07:48,836] [DEBUG] [MainThread] : plugin 'AutoBackup' v1.1.3
[2026-01-30 01:07:48,842] [DEBUG] [MainThread] : plugin 'WpaSec' v2.1.2
[2026-01-30 01:07:48,853] [DEBUG] [MainThread] : plugin 'MemTemp' v1.0.2
[2026-01-30 01:07:48,863] [INFO] [WebServer] : web ui available at http://[::]:8080/
[2026-01-30 01:07:48,864] [DEBUG] [MainThread] : plugin 'WebConfig' v1.0.0
[2026-01-30 01:07:48,867] [DEBUG] [MainThread] : plugin 'Cache' v1.0.0
 * Serving Flask app 'pwnagotchi.ui.web.server'
 * Debug mode: off
...

So if I'm understanding the situation right, the code fails at rendering the image to the display, that's why the screen is constant white and flickering.

I would like to request some help from you guys to fix this issue.

Thank you in advance!

Version

2.9.5.4

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions