#152 - almost done, but one switch doesn't work and LEDs are flickering

63 views
Skip to first unread message

Jeremy Radwan

unread,
Feb 28, 2026, 9:43:17 PMFeb 28
to [PiDP-1]
I am SO close I think to finishing my build of the PiDP-1 kit to join my PiDP-8, PiDP-11, and PiDP-10. This build has been a bit more challenging for me (I'm still worried about finishing the case with my meager soldering skills) but it's still been fun!

I had my first problem when I slipped and messed up one of the ICs (broke a pin), but Jose pointed me to Amazon to get a replacement (20 replacements, actually, ha! Does anyone need 19 spares?) and I was able to move on. 

But now I'm at the testing phase and I have ONE switch that I cannot get to work, the 5th from the left on the top row (Extension). I didn't read the troubleshooting page carefully enough (my mistake!) so I assumed I had killed the switch during soldering and attempted to remove it (which took some doing as I am not a great solderer) before trying the additional troubleshooting steps. I was finally able to replace it with another switch and have the SAME problem. My multimeter seems to confirm the connections are fine and shorting the pins doesn't cause a status change either so the switch should be good. I visually checked the resistors and as far as I can tell it looks ok (the area is a bit of a mess now due to my removing the original switch). 

In addition to that, when the Pi powers up (but before I log in and pdp1control starts), the second from the top row of LEDs is lit, like described here. I added POWER_OFF_ON_HALT=1 to the eeprom config which works on shutdown, but are those LEDs supposed to be on at boot?

Finally, when pdp1control is running, the LEDs are flickering/strobing rapidly. It's too fast to catch on video, but you can kinda see what I'm talking about here

If I play with the switches, I can confirm Blinky is running (in the browser-based GUI, I can see it typing out it's instructions in the typewriter and the display has a moving green line).

So ... any suggestions on a) how to fix the one non-working switch and b) fix the flickering problem? Are the two related?

Thanks!

Bill E

unread,
Mar 1, 2026, 7:04:29 AMMar 1
to [PiDP-1]
Switch - check the traces around the switch for continuity with a meter, it's possible you broke one. Also check around the IC pins next to where the Pi plugs in, the decoding is done there.

Lights - what are you running for a Pi? The panel driver is a huge resource hog. It maxes 1.8 cores on a pi5. Note that it does scan the lights, they are updated in basically rows which is what you see in your vid. I modified the panel driver in my pidp1-mods release to drastically reduce the cpu load (0.70 of one core). You could give that a try. I actually like the lights better using it, looks more realistic from my vague memory of the real thing .
Note that you can install the modded version alongside the original release.
Bill

Jeremy Radwan

unread,
Mar 1, 2026, 8:19:34 PMMar 1
to [PiDP-1]
I'm using a Pi 5 w/4gb of RAM. I'll look into your modded repo, thanks.

Guess I need to get a magnifier and start checking traces ...

Jeremy Radwan

unread,
Mar 2, 2026, 11:42:20 AMMar 2
to [PiDP-1]
Ok, I'm not sure what happened, but my LED flickering issue seems to be fixed.

I tried cloning Bill's pidp1-mods repo and installed it. During compile, I got an error:

main.c: In function ‘handledpy’:
main.c:241:42: error: passing argument 3 of ‘pthread_create’ from incompatible pointer type [-Wincompatible-pointer-types]
  241 |         pthread_create(&lp_thread, NULL, lightpenListener, pdp);
      |                                          ^~~~~~~~~~~~~~~~
      |                                          |
      |                                          int (*)(PDP1 *)
In file included from main.c:18:
/usr/include/pthread.h:204:36: note: expected ‘void * (*)(void *)’ but argument is of type ‘int (*)(PDP1 *)’
  204 |                            void *(*__start_routine) (void *),
      |                            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~

I ignored it since I'm not using any lightpen stuff, but of course this prevented all the binaries from being created. test.sh wouldn't work because it was looking for /opt/pidp1-mods/bin/pidp1_test and that symlink was pointing to a non-existent file. I poked around and got test.sh 'working' but the switch values were all randomly changing, the LEDs were blinking randomly, it clearly wasn't working correctly. I had to manually kill some processes and clean things up. 

Figuring I had done something wrong, I re-ran install.sh for the original pidp1 tools to put everything back, and this time when I started pidp1control, the LEDs were on solid and NOT flickering! Further testing showed I could load in Blinky-1 and get it running and the blinkenlights all seemed fine. 

I'm not sure what I did messing around with Bill's repo that "fixed" the LED problem?

So now my only issue still seems to be that one switch.

Bill E

unread,
Mar 2, 2026, 12:14:52 PMMar 2
to [PiDP-1]
What platform are you building on? I haven't seen this, and others that have built haven't seen it.
I'll check into it, though. Probably yet another gcc nanny silliness.

Bill

Bill E

unread,
Mar 2, 2026, 1:35:09 PMMar 2
to [PiDP-1]
Ok, fixed (I think), yes, more gcc nannyness, not sure why I'm not seeing it. But, I changed the function sig to match what it was complaining about, still builds for me.
Bill

Jeremy Radwan

unread,
Mar 2, 2026, 1:58:55 PMMar 2
to [PiDP-1]
I'm running Debian 13 trixie on a Ras Pi 5. I pulled your latest changes but same error:

make: Entering directory '/opt/pidp1-mods/src/blincolnlights/pdp1'
gcc -w -g -O3 -Wl,--dynamic-list=symbol-exports.ldr -o pdp1 main.c panel1.c typtelnet.c audio.c lowpass.c ../common.c ../pollfd.c pdp1.o dynamicIots.o highSpeedChannels.o ../logger.c -I.. -lpthread -lm -lSDL2

main.c: In function ‘handledpy’:
main.c:241:42: error: passing argument 3 of ‘pthread_create’ from incompatible pointer type [-Wincompatible-pointer-types]
  241 |         pthread_create(&lp_thread, NULL, lightpenListener, pdp);
      |                                          ^~~~~~~~~~~~~~~~
      |                                          |
      |                                          int (*)(void *)

In file included from main.c:18:
/usr/include/pthread.h:204:36: note: expected ‘void * (*)(void *)’ but argument is of type ‘int (*)(void *)’

  204 |                            void *(*__start_routine) (void *),
      |                            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:10: pdp1] Error 1

It's just weird that somehow this "fixed" my flickering LEDs. Some sort of system-level change? Not complaining, I'm happy it worked.

Bill E

unread,
Mar 2, 2026, 3:47:29 PMMar 2
to [PiDP-1]
I really get annoyed with the different gcc versions floating around. No errors for some, warnings for some, errors for some. Anyway, fixed again. The decl for lightpenEnable didn't strictly match the prototype, but in a way that would not cause any problem, should have been a warning at best. I'm glad people are trying this out and finding these annoying things, though.

Bill

Jeremy Radwan

unread,
Mar 2, 2026, 3:50:34 PMMar 2
to [PiDP-1]
Sorry to be a pain, but it still won't compile. I'll keep trying if you want to keep fixing though! ;-)

make: Entering directory '/opt/pidp1-mods/src/blincolnlights/pdp1'
gcc -w -g -O3 -c pdp1.c -I..

gcc -w -g -O3 -Wl,--dynamic-list=symbol-exports.ldr -o pdp1 main.c panel1.c typtelnet.c audio.c lowpass.c ../common.c ../pollfd.c pdp1.o dynamicIots.o highSpeedChannels.o ../logger.c -I.. -lpthread -lm -lSDL2
main.c: In function ‘handledpy’:
main.c:241:42: error: passing argument 3 of ‘pthread_create’ from incompatible pointer type [-Wincompatible-pointer-types]
  241 |         pthread_create(&lp_thread, NULL, lightpenListener, pdp);
      |                                          ^~~~~~~~~~~~~~~~
      |                                          |
      |                                          void (*)(void *)

In file included from main.c:18:
/usr/include/pthread.h:204:36: note: expected ‘void * (*)(void *)’ but argument is of type ‘void (*)(void *)’

  204 |                            void *(*__start_routine) (void *),
      |                            ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:10: pdp1] Error 1

Jeremy Radwan

unread,
Mar 2, 2026, 8:46:43 PMMar 2
to [PiDP-1]
I fixed my switch! Had to get out a jeweler's loupe to check all my solder joints and noticed I might have snipped one of the leads of the related resistor a little too close. Added a little extra solder to both joints and the switch works now (I can get '777777 777777 776000 000000' from the test program). Woo hoo! Looks like I can proceed with soldering into the case now ...

One other question about the test program, though. I noticed that after the LEDs do their sequential light-ups, there's a VERY dim sequence where I can see three LEDs at a time on each row scroll right to left. Is that supposed to be at normal brightness? I didn't even notice before during the day with brighter sunlight in my office, only tonight when the lighting was reduced.

sunnyboy010101

unread,
Mar 3, 2026, 12:38:00 AMMar 3
to [PiDP-1]
Reply all
Reply to author
Forward
0 new messages