DuetTestSPI tool available
-
Given what was going on in this thread, where SPI problems are suspected, I decide to whip together a utility that would combine all the suggested tests, give "Duet relevant" messages to be more useful to an end user, and etc.
If anyone wants to use it for support, it is: https://github.com/DanalEstes/DuetTestSPI
Install via Either:
git clone https://github.com/DanalEstes/DuetTestSPI
or, if you want just the binary:
wget https://github.com/DanalEstes/DuetTestSPI/raw/master/DuetTestSPI
chmod 744 DuetTestSPIExample where all checks passed:
./DuetTestSPI spi mode: 0x0 bits per word: 8 max speed: 8000000 Hz (8000 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. Loopback on pins 19-21, SPI MOSI MISO tested successfully. Testing SPI CE0 on pin 24, GPIO 8 as an input. Testing via jumper from adjacent pin 22, gpio 25, as output. gpio=25 mode= 1 level=1 gpio= 8 mode= 0 level=1 gpio=25 mode= 1 level=0 gpio= 8 mode= 0 level=0 Send pin 22 and receive pin SPI CE0 on pin 24, GPIO 8 matched. SPI Buffer size correctly set to 8192. All tests passed, SPI should work for Duet 3 <> Raspberry Pi.
Example where SPI loopback failed:
./DuetTestSPI spi mode: 0x0 bits per word: 8 max speed: 8000000 Hz (8000 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ Send and receive buffers do not match! Check jumpers in place for testing, pin 22-24 and 19-21. If they are correct, this machine MAY have an SPI problem, and is unlikely to run correctly in a Duet3 <> Raspberry Pi configuration. Aborted
Example where SPI CE0 loopback failed:
./DuetTestSPI spi mode: 0x0 bits per word: 8 max speed: 8000000 Hz (8000 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. Loopback on pins 19-21, SPI MOSI MISO tested successfully. Testing SPI CE0 on pin 24, GPIO 8 as an input. Testing via jumper from adjacent pin 22, gpio 25, as output. gpio=25 mode= 1 level=1 gpio= 8 mode= 0 level=1 gpio=25 mode= 1 level=0 gpio= 8 mode= 0 level=0 Send pin 22 and receive pin 24 do not match! Check jumpers in place for testing, pin 22-24 and 19-21. If they are correct, this machine MAY have an SPI problem, and is unlikely to run correctly in a Duet3 <> Raspberry Pi configuration. Aborted
Example where SPI buffer size has not (yet) been set correctly:
$ ./DuetTestSPI spi mode: 0x0 bits per word: 8 max speed: 8000000 Hz (8000 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�. Loopback on pins 19-21, SPI MOSI MISO tested successfully. Testing SPI CE0 on pin 24, GPIO 8 as an input. Testing via jumper from adjacent pin 22, gpio 25, as output. gpio=25 mode= 1 level=1 gpio= 8 mode= 0 level=1 gpio=25 mode= 1 level=0 gpio= 8 mode= 0 level=0 Send pin 22 and receive pin SPI CE0 on pin 24, GPIO 8 matched. SPI buffer size not set to 8192, please correct via: echo "options spidev bufsiz=8192" | sudo tee /etc/modprobe.d/spidev.conf and reboot. Aborted