Pico Universal PWM Won't boot Random pins not working

More
10 months 1 week ago #340295 by LearningLinuxCNC
So I have not used my RB1-CNC machine for a while. I tried starting it up today and I am getting errors on load that have to do with not being able to find pins on the Pico Systems Universal PWM board. Sometimes it won't find the board at all other times it won't find an generic IO pin other times it won't find an encoder pin.

This was working then I had to reconfigure from 2.7 to 2.8 and got it working again and now after setting for around a year I can't get it to load into linuxcnc unless I comment out of the hal files that tie to the pins on the UPWM board.

Here is one of the error outputs.
Code:
Error report created by /usr/lib/tcltk/linuxcnc/show_errors.tcl: Print file information: RUN_IN_PLACE=no LINUXCNC_DIR= LINUXCNC_BIN_DIR=/usr/bin LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc LINUXCNC_SCRIPT_DIR= LINUXCNC_RTLIB_DIR=/usr/lib/linuxcnc/modules LINUXCNC_CONFIG_DIR= LINUXCNC_LANG_DIR=/usr/lib/tcltk/linuxcnc/msgs INIVAR=inivar HALCMD=halcmd LINUXCNC_EMCSH=/usr/bin/wish8.6 LINUXCNC - 2.8.4-1-gb7824717b Machine configuration directory is '/home/jim/linuxcnc/configs/RB1-CNC_Gmoccapy_DEV_1_10' Machine configuration file is 'RB1-CNC_Gmoccapy.ini' INIFILE=/home/jim/linuxcnc/configs/RB1-CNC_Gmoccapy_DEV_1_10/RB1-CNC_Gmoccapy.ini VERSION=1.1 PARAMETER_FILE=sim.var TASK=milltask HALUI=halui DISPLAY=gmoccapy COORDINATES=XYZ KINEMATICS=trivkins coordinates=XYZ Starting LinuxCNC... Starting LinuxCNC server program: linuxcncsvr Loading Real Time OS, RTAPI, and HAL_LIB modules Starting LinuxCNC IO program: io Starting HAL User Interface program: halui Found file(REL): ./univpwm_load.hal Found file(REL): ./univpwm_servo.hal Found file(REL): ./univpwm_io.hal Shutting down and cleaning up LinuxCNC... Removing HAL_LIB, RTAPI, and Real Time OS modules Removing NML shared memory segments Debug file information: Note: Using POSIX realtime PPMC: bus 0 epp_dir = 0 PPMC: bus 1 epp_dir = 0 PPMC: bus 2 epp_dir = 0 PPMC: checking EPP bus 0 at port 0378 PPMC: slot 0: ID code: 08 PPMC: Check Parallel Port connection. read cache bitmap: 00000000 write cache bitmap: 00000000 PPMC: slot 1: ID code: 10 PPMC encoder card 1 PPMC: exporting encoder pins / params read cache bitmap: 00001fff write cache bitmap: 00002000 PPMC: slot 2: ID code: 28 PPMC DAC card PPMC:  exporting PPMC DAC read cache bitmap: 00000000 write cache bitmap: 000000ff PPMC: slot 3: ID code: 21 PPMC DAC card PPMC:  exporting PPMC DAC read cache bitmap: 00000000 write cache bitmap: 000000ff PPMC: slot 4: nothing detected at addr 4 reads 4f PPMC: slot 5: nothing detected at addr 5 reads 5f PPMC: slot 6: nothing detected at addr 6 reads 6f PPMC: slot 7: nothing detected at addr 7 reads 7f PPMC: slot 8: nothing detected at addr 8 reads 8f PPMC: slot 9: nothing detected at addr 9 reads 9f PPMC: slot 10: nothing detected at addr a reads af PPMC: slot 11: nothing detected at addr b reads bf PPMC: slot 12: nothing detected at addr c reads cf PPMC: slot 13: nothing detected at addr d reads 5f PPMC: slot 14: nothing detected at addr e reads ef PPMC: slot 15: nothing detected at addr f reads ff PPMC: bus 0 complete ./univpwm_io.hal:14: Pin 'ppmc.0.din.04.in' does not exist 1199 Stopping realtime threads Unloading hal components PPMC: shutting down Note: Using POSIX realtime ----------------------------------------------------------------------- Info report created by linuxcnc_info: The file:    /tmp/linuxcnc_info.txt can be posted to a forum or a web site like:      http://pastebin.com in order to provide information about the linuxcnc system and configuration.                 Date: Thu 18 Dec 2025 08:12:47 PM CST             UTC Date: Fri 19 Dec 2025 02:12:47 AM UTC         this program: /usr/bin/linuxcnc_info               uptime: 20:12:47 up 1 min, 1 user, load average: 0.98, 0.53, 0.20      lsb_release -sa: Debian Debian GNU/Linux 10 (buster) 10 buster       which linuxcnc: /usr/bin/linuxcnc                  pwd: /home/jim/linuxcnc/configs/RB1-CNC_Gmoccapy_DEV_1_10                 USER: jim              LOGNAME: jim                 HOME: /home/jim               EDITOR:               VISUAL:             LANGUAGE:                 TERM: dumb            COLORTERM:              DISPLAY: :0.0              DESKTOP: lightdm-xsession         display size: 1600x900 pixels (423x238 millimeters)                 PATH: /usr/bin:/home/jim/linuxcnc/configs/RB1-CNC_Gmoccapy_DEV_1_10/bin:/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games uname items:          nodename -n: RB1CNC       kernel-name -s: Linux       kernel-vers -v: #1 SMP PREEMPT RT Debian 4.19.249-2 (2022-06-30)           machine -m: x86_64         processor -p: unknown          platform -i: unknown       oper system -o: GNU/Linux /proc items:              cmdline: BOOT_IMAGE=/boot/vmlinuz-4.19.0-21-rt-amd64 root=UUID=43e45ba2-b737-4e61-84e3-76e380b282e4 ro quiet           model name: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz                cores: 4              cpu MHz: 1191.600              parport: 0000-0000 : parport0 0000-0000 : parport0               serial: 0000-0000 : serial 0000-0000 : serial Versions:                  gcc: gcc (Debian 8.3.0-6) 8.3.0               python: Python 2.7.16                  git: not_in_PATH           git commit: NA                  tcl: 8.6                   tk: 8.6                glade: not_in_PATH           glade-gtk2: not_in_PATH linuxcnc_var all:      LINUXCNCVERSION: 2.8.4-1-gb7824717b LINUXCNC_AUX_GLADEVCP: /usr/share/linuxcnc/aux_gladevcp LINUXCNC_AUX_EXAMPLES: /usr/share/linuxcnc/aux_examples             REALTIME: /etc/init.d/realtime                  RTS: uspace           HALLIB_DIR: /usr/share/linuxcnc/hallib dpkg -l '*linuxcnc*': Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name                Version              Architecture Description +++-===================-====================-============-===================================================================== un  linuxcnc            <none>               <none>       (no description available) un  linuxcnc-dev        <none>               <none>       (no description available) un  linuxcnc-doc        <none>               <none>       (no description available) ii  linuxcnc-doc-en     1:2.8.4.1.gb7824717b all          motion controller for CNC machines and robots (English documentation) ii  linuxcnc-doc-es     1:2.8.4.1.gb7824717b all          controlador de movimiento para máquinas CNC y robots (Español). ii  linuxcnc-doc-fr     1:2.8.4.1.gb7824717b all          motion controller for CNC machines and robots (French documentation) un  linuxcnc-sim        <none>               <none>       (no description available) un  linuxcnc-sim-dev    <none>               <none>       (no description available) ii  linuxcnc-uspace     1:2.8.4.1.gb7824717b amd64        motion controller for CNC machines and robots ii  linuxcnc-uspace-dev 1:2.8.4.1.gb7824717b amd64        PC based motion controller for real-time Linux

Please Log in to join the conversation.

More
10 months 1 week ago #340304 by jmelson
That report lists 4 PPMC boards at "slots" 0, 1, 2 and 3. That is pretty odd. Are you sure this machine has a PWM controller? Are you sure the parallel port is set up correctly? Did the CMOS battery go dead? If so, the BIOS settings for the parallel port would have gotten lost. Make sure the BIOS peripheral settings for the parallel port are set to EPP mode.
Those are the first things that come to mind.
Report back if these hints don't fix it.
Jon

Please Log in to join the conversation.

More
10 months 1 week ago #340326 by LearningLinuxCNC
John,

Yes it is the UPWM board. It is driving your pwm servo drives. The CMOS battery did die at one point but the parallel port is set up in epp mode. I am not sure why it is doing this. If you have any troubleshooting tips I would be glad to hear them. Could the eeprom be bad?

Please Log in to join the conversation.

More
10 months 1 week ago #340346 by jmelson

John,

Yes it is the UPWM board. It is driving your pwm servo drives. The CMOS battery did die at one point but the parallel port is set up in epp mode. I am not sure why it is doing this. If you have any troubleshooting tips I would be glad to hear them. Could the eeprom be bad?
 
OK, so the scan of the parallel port is getting some random stuff, since it thinks it sees a bunch of PPMC boards there.
The FPGA on the UPC runs a checksum on the data loaded from EPROM, so if the red (load fail) LED flashes and goes out when power is applied, then it is accepting the firmware as valid.  If that LED stays on, then the firmware did NOT load.  First, check that the BIOS settings are for the parallel port to be at address 378, as that is what LinuxCNC is using.  If this is a PCI or PCIe parallel port, then the address will not be 0x378.  There are several versions of EPP mode, if the BIOS allows to select between 1.7 and 1.9 versions, try both.  If your parport cable is not rated for IEEE1284 operation, that can be the problem.
Oh, one other thing is there are some ppmc driver options that may need to be changed for the newer LinuxCNC version.
In your config file set, in ppmc_load.hal, on the line that loads the ppmc driver,
loadrt hal_ppmc timestamp="0x00"
try adding this to the end of that line:
< space> epp_dir=1
That might fix it.  This is documented in a comment in that file.

I'm not too sure what else to suggest.
Jon

Please Log in to join the conversation.

More
10 months 1 week ago #340359 by LearningLinuxCNC
Jon,

I have tried both 1.9 and 1.7 on the bios epp setting.

I tried the epp_dir=1 setting as you suggested.

The cable is the same one I have been using since I converted the machine back in 2015 or so.

The load fail red led does come on and stay on when I boot up linuxcnc and get the error messages. also the green estop ok led is lit as well. Prior to starting linuxcnc the light is off.

I decided to try and update to 2.9 linuxcnc and see if that helps but I am running into issues with that also. I need to get python3.7 installed but it is not playing nice. I will keep working on it but I suspect it is a hardware issue.

Do we need to try another eprom?
 

Please Log in to join the conversation.

More
10 months 1 week ago #340383 by jmelson

Jon,


The load fail red led does come on and stay on when I boot up linuxcnc and get the error messages. 
This is the killer problem!  The FPGA is not accepting the load of its program.  It is somewhat unlikely the EPROM has gone bad, but possible.  First, check that the +12V supply is operating properly, and does not have excessive ripple.  Without a valid program in the FPGA, nothing will ever work.  If the power supply is good, then it is possible the FPGA has been damaged, or one of the regulators on the board has gone bad or is overloaded.  You can check from the wide tab of U31 to one of the G terminals of P2.
That should read +3.3 V.  Then check the wide tab of U32, that should read +1.2V.  If either of these is out of range, something got popped.  You can also check for correct power up with the parallel port cable disconnected.  D4 (Load Fail) should blink once and then stay out.
Jon

Please Log in to join the conversation.

More
10 months 1 week ago #340384 by jmelson

The load fail red led does come on and stay on when I boot up linuxcnc and get the error messages. also the green estop ok led is lit as well. Prior to starting linuxcnc the light is off.


 
OH, didn't read closely enough!  If you are saying the Load Fail LED only stays on after LinuxCNC starts?  I know of NO WAY LinuxCNC can turn this light on, except by maybe causing a fluctuation of the 12 V supply.
Please give a bit more detail.
Jon

Please Log in to join the conversation.

Time to create page: 0.090 seconds
Powered by Kunena Forum