Ubercorn LED ghosting

I bought an Ubercorn in the Black Friday sales last year and, apart from playing with the demo scripts at the time, have only just found time to start coding with it properly.

I started by trying to work out how the grid reference system works, so wrote a quick test script to light just the LED at 0,0:

import unicornhathd

unicornhathd.rotation(0)
unicornhathd.clear()
unicornhathd.set_pixel(x=0, y=0, r=255, g=255, b=255)
unicornhathd.show()

This lights up 0,0 white, as expected, but 0,15 also lights up a dim green colour. Looking closely at the LED, all three colours are lit, but green is brightest, followed by blue then red.
If I light 0,15 on its own instead, I see 0,14 dimly lit.
If I choose any other LED in the grid, I seem to get a similar effect - the previous LED in the same column lights up (wrapping around when on the edge). If I change the colour of the main LED to red, the ghost is also red, green it is also green etc.

Having previously had some experience with driving smaller LED arrays directly with an Arduino, it looks very much like the Ubercorn’s scanning code is not blanking the row-contents register in one of the LED driver chips before switching rows, leading to a very small period of time where the same LED on the next row is receiving current before the register is updated for the new row’s contents, producing a much dimmer echo of the previous row (essentially PWM with a narrower pulse).

So, to me, this looks like a firmware issue on the Ubercorn, rather than a hardware problem or anything wrong with my Python code. Is there anything I can do to rectify this? My intended application requires clean on/off states for all LEDs.

Many thanks.

Well, they say a picture is worth a thousand words. Here’s my best effort at showing just how bright the ghosts can be:


That’s pixel 15,15 lit full green with its neighbour 15,14 doing a bad impression of it.

Definitely not a power supply issues? Voltage dropout can cause these symptoms.

I’m using a Pi Zero W with a brand new official 2.5 A power supply, with the single Ubercorn powered directly from the Pi’s GPIO pins. The Pi has no USB peripherals or HDMI attached (I’m using SSH over the wi-fi to edit and kick off the script), so overall current draw shouldn’t be too high.
I can try a different power supply this evening and report back.

OK, I have tried a second official 2.5 A power supply, but it looks the same. I then grudgingly disgorged my RPi 3 B from its SUPERPI case and tried that (with the supplied header extension), and it still behaves in exactly the same way.

Would anyone else be kind enough to run the following code and see if it looks anything like the photo above on their Ubercorn?

import unicornhathd

unicornhathd.rotation(0)
unicornhathd.clear()
unicornhathd.set_pixel(x=15, y=15, r=0, g=255, b=0)
unicornhathd.show()