- Hardware & Machines
- Computers and Hardware
- Remora - Rpi Software Stepping Using External Microcontroller via SPI
Remora - Rpi Software Stepping Using External Microcontroller via SPI
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
08 Jan 2026 18:43 #341173
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
I was using remora on BTT Octopus pro board. Few days back I had to remove the board for some reason. Now it's not working. Nothing has changed. I tried erasing and reflashing remora by stm32 programmer. Tried changing spi cable from board to rpi4. I can see remora firmware is working on board. I added blink module to verify remora, it's working. I can see via UART console that remora ha loaded correctly and comes to idle state.
But on LinuxCNC side machine don't comes out of estop. No configuration changed. Tried new trixie image but can't compile remora due to incomplete pointer error. Don't know what's going wrong?
But on LinuxCNC side machine don't comes out of estop. No configuration changed. Tried new trixie image but can't compile remora due to incomplete pointer error. Don't know what's going wrong?
Please Log in or Create an account to join the conversation.
- 3404gerber
- Offline
- Senior Member
-
Less
More
- Posts: 41
- Thank you received: 12
09 Jan 2026 06:02 - 09 Jan 2026 06:09 #341193
by 3404gerber
I'm not sure I can help for the estop state in lcnc. I would start by checking the payloads in both BTT firmware and hal component.
For the compilation error, I ran into the same error when I was trying to compile my TMC5160 component and solved the problem by changing the code a bit. As I'm not a coder, I have no big idea what I'm doing, but sounds like a casting problem to me. You can try following changes in the rp1lib.c of the linuxcnc component:
Replace the lines:
dws = &inst->spi[spi_num];
spi = &inst->spi_dev[spi_num];
with
dws = (struct dw_spi*)&inst->spi[spi_num];
spi = (struct spi_device*)&inst->spi_dev[spi_num];
and:
dws = &inst->spi[spi_num];
cfg = &inst->spi_cfg[spi_num];
dev = &inst->spi_dev[spi_num];
with:
dws = (struct dw_spi*)&inst->spi[spi_num];
cfg = (struct dw_spi_cfg*)&inst->spi_cfg[spi_num];
dev = (struct spi_device*)&inst->spi_dev[spi_num];
After those changes I was again able to compile my component and could use it. BUT I didn't try it on a RPi5 actually using the rp1 lib, just on a RPi4.
Hope it helps.
Replied by 3404gerber on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
Hi,I was using remora on BTT Octopus pro board. Few days back I had to remove the board for some reason. Now it's not working. Nothing has changed. I tried erasing and reflashing remora by stm32 programmer. Tried changing spi cable from board to rpi4. I can see remora firmware is working on board. I added blink module to verify remora, it's working. I can see via UART console that remora ha loaded correctly and comes to idle state.
But on LinuxCNC side machine don't comes out of estop. No configuration changed. Tried new trixie image but can't compile remora due to incomplete pointer error. Don't know what's going wrong?
I'm not sure I can help for the estop state in lcnc. I would start by checking the payloads in both BTT firmware and hal component.
For the compilation error, I ran into the same error when I was trying to compile my TMC5160 component and solved the problem by changing the code a bit. As I'm not a coder, I have no big idea what I'm doing, but sounds like a casting problem to me. You can try following changes in the rp1lib.c of the linuxcnc component:
Replace the lines:
dws = &inst->spi[spi_num];
spi = &inst->spi_dev[spi_num];
with
dws = (struct dw_spi*)&inst->spi[spi_num];
spi = (struct spi_device*)&inst->spi_dev[spi_num];
and:
dws = &inst->spi[spi_num];
cfg = &inst->spi_cfg[spi_num];
dev = &inst->spi_dev[spi_num];
with:
dws = (struct dw_spi*)&inst->spi[spi_num];
cfg = (struct dw_spi_cfg*)&inst->spi_cfg[spi_num];
dev = (struct spi_device*)&inst->spi_dev[spi_num];
After those changes I was again able to compile my component and could use it. BUT I didn't try it on a RPi5 actually using the rp1 lib, just on a RPi4.
Hope it helps.
Last edit: 09 Jan 2026 06:09 by 3404gerber. Reason: Formating issue
Please Log in or Create an account to join the conversation.
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
09 Jan 2026 16:11 #341208
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
Thanks for reply. That changes resolved the issue of not compiling on trixie, there was also some error on line 505 column 69 of remora-spi.c. I edited that, I don't if that's correct, but that line will only be used in case of using rpi5, don't bothered and compiled the remora component. But still same issue on trixie and bookworm.
Hope some will help.
Hope some will help.
Please Log in or Create an account to join the conversation.
- 3404gerber
- Offline
- Senior Member
-
Less
More
- Posts: 41
- Thank you received: 12
09 Jan 2026 19:37 #341218
by 3404gerber
Replied by 3404gerber on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
Sorry if I ask obvious things that you already checked, but what message do you have if you start LinuxCNC from a terminal, and then try to get out of emergency stop state? I don't have an SPI version, but on the Ethernet version I get an error message like "Bad SPI payload = 0" if I don't have communication with my board.Thanks for reply. That changes resolved the issue of not compiling on trixie, there was also some error on line 505 column 69 of remora-spi.c. I edited that, I don't if that's correct, but that line will only be used in case of using rpi5, don't bothered and compiled the remora component. But still same issue on trixie and bookworm.
Hope some will help.
Please Log in or Create an account to join the conversation.
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
10 Jan 2026 05:19 #341228
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
I didn't tested by launching from terminal. But I tried with skr3 board which was tested working and octopus pro with newer(tmc5160) and regular remora both have same problem.
Please Log in or Create an account to join the conversation.
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
10 Jan 2026 13:26 - 10 Jan 2026 14:28 #341233
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
eating a std module
Remora PRU - Programmable Realtime Unit
Mbed-OS6
Remora-spi Driver
## Entering SETUP state
1. Reading json configuration file
OK
Opening "/fs/config.txt"... OK
Json config file lenght = 3836
Closing "/fs/config.txt"...
2. Setting up DMA and threads
Initialising SPI1 slave
Initialising DMA for SPI
3. Parsing json configuration file
Config deserialisation - Deserialization succeeded
4. Config threads
Creating thread 40000
Creating thread 1000
Creating thread 57600
5. Loading modules
Servo thread object
Reset pin
Make Reset Pin at pin PC_15
Creating a std module
Creating Pin @
port = GPIOC
pin = 15
Base thread object
X - Joint 0 step generator
Creating a std module
Creating Pin @
port = GPIOF
pin = 14
Creating Pin @
port = GPIOF
pin = 13
Creating Pin @
port = GPIOF
pin = 12
Base thread object
Y - Joint 1 step generator
Creating a std module
Creating Pin @
port = GPIOF
pin = 15
Creating Pin @
port = GPIOG
pin = 0
Creating Pin @
port = GPIOG
pin = 1
Base thread object
Z - Joint 2 step generator
Creating a std module
Creating Pin @
port = GPIOG
pin = 5
Creating Pin @
port = GPIOF
pin = 11
Creating Pin @
port = GPIOG
pin = 3
Base thread object
E0 - Joint 3 step generator
Creating a std module
Creating Pin @
port = GPIOA
pin = 0
Creating Pin @
port = GPIOG
pin = 4
Creating Pin @
port = GPIOC
pin = 1
Base thread object
E1 - Joint 4 step generator
Creating a std module
Creating Pin @
port = GPIOG
pin = 2
Creating Pin @
port = GPIOF
pin = 9
Creating Pin @
port = GPIOF
pin = 10
Servo thread object
X min
Make Digital Input at pin PG_6
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 6
Servo thread object
X max
Make Digital Input at pin PG_9
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 9
Servo thread object
Y min
Make Digital Input at pin PG_10
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 10
Servo thread object
Y max
Make Digital Input at pin PG_11
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 11
Servo thread object
Z min
Make Digital Input at pin PG_12
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 12
Servo thread object
Z max
Make Digital Input at pin PG_13
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOG
pin = 13
Servo thread object
Probe
Make Digital Input at pin PC_5
Creating a std module
Setting pin as No Pull
Creating Pin @
port = GPIOC
pin = 5
Servo thread object
Estop pin
Make eStop at pin PE_11
Creating a std module
Creating Pin @
port = GPIOE
pin = 11
Servo thread object
Make Blink at pin PA_8
Creating a std module
Creating Pin @
port = GPIOA
pin = 8
Servo thread object
Spindle PWM 0
Make PWM at pin PB_0
Creating a std module
Creating Hardware PWM at pin PB_0
Creating Pin @
port = GPIOB
pin = 0
## Entering START state
Starting the BASE thread
Registering interrupt for interrupt number = 24
power on Timer 9
Starting the SERVO thread
Registering interrupt for interrupt number = 25
power on Timer 10
## Entering IDLE state
Here is output on UART from remora firmware
Edit: Launched linuxcnc on terminal, getting "bad spi payload"
(Bad SPI payload = 32393a38)
Last edit: 10 Jan 2026 14:28 by amanker.
Please Log in or Create an account to join the conversation.
- 3404gerber
- Offline
- Senior Member
-
Less
More
- Posts: 41
- Thank you received: 12
11 Jan 2026 11:27 #341260
by 3404gerber
#define PRU_DATA 0x64617461 // "data" SPI payload
#define PRU_READ 0x72656164 // "read" SPI payload
#define PRU_WRITE 0x77726974 // "writ" SPI payload
#define PRU_ESTOP 0x65737470 // "estp" SPI payload
I'd try with a lower SPI frequency.
Replied by 3404gerber on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
The value of the payload is strange; it's almost half value of what you are suppose to get:
... Edit: Launched linuxcnc on terminal, getting "bad spi payload" (Bad SPI payload = 32393a38)
#define PRU_DATA 0x64617461 // "data" SPI payload
#define PRU_READ 0x72656164 // "read" SPI payload
#define PRU_WRITE 0x77726974 // "writ" SPI payload
#define PRU_ESTOP 0x65737470 // "estp" SPI payload
I'd try with a lower SPI frequency.
Please Log in or Create an account to join the conversation.
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
11 Jan 2026 15:57 #341275
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
I tried cutting the spi cable short. Now it's just 7cm or smaller. Tried to lower spi frequency to 50000. But nothing helped.
Please Log in or Create an account to join the conversation.
- 3404gerber
- Offline
- Senior Member
-
Less
More
- Posts: 41
- Thank you received: 12
11 Jan 2026 18:12 #341287
by 3404gerber
Replied by 3404gerber on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
7cm should be ok. I started to have issue with TMC driver @4MHz after more or less 50cm.
Can you confirm that you always get the same SPI payload? (say, press the reset button 10 times and compare the results)
Could you share you hal file and the link to the firmware/lcnc component you use?
Can you confirm that you always get the same SPI payload? (say, press the reset button 10 times and compare the results)
Could you share you hal file and the link to the firmware/lcnc component you use?
Please Log in or Create an account to join the conversation.
- amanker
- Offline
- Premium Member
-
Less
More
- Posts: 108
- Thank you received: 2
11 Jan 2026 19:10 - 12 Jan 2026 06:33 #341291
by amanker
Replied by amanker on topic Remora - Rpi Software Stepping Using External Microcontroller via SPI
I am using this branch
github.com/scottalford75/Remora/tree/main
This is repository I am using since last 2 years. Used on stm32f429 and stm32f446 both version of octopus pro boards
And also tested this one.
github.com/ben-jacobson/Remora-STM32F4xx-PIO
On octopus pro stm32f446 board
Also tested this repo
github.com/scottalford75/Remora-STM32H7xx-PIO
On BTT skr3 board
All were working. But now every repo gives same problem
Yes payload remains same.
"Bad SPI payload = 32393a38"
Occasionally it's 32393a30
github.com/scottalford75/Remora/tree/main
This is repository I am using since last 2 years. Used on stm32f429 and stm32f446 both version of octopus pro boards
And also tested this one.
github.com/ben-jacobson/Remora-STM32F4xx-PIO
On octopus pro stm32f446 board
Also tested this repo
github.com/scottalford75/Remora-STM32H7xx-PIO
On BTT skr3 board
All were working. But now every repo gives same problem
Yes payload remains same.
"Bad SPI payload = 32393a38"
Occasionally it's 32393a30
Last edit: 12 Jan 2026 06:33 by amanker.
Please Log in or Create an account to join the conversation.
- Hardware & Machines
- Computers and Hardware
- Remora - Rpi Software Stepping Using External Microcontroller via SPI
Time to create page: 0.173 seconds