Simple 3 wire serial connection from PI3 to SKR V1.3 board

What is the problem?
I have a Pi 3 with Octprint and SKR V1.3 and want to get rid of the bulky USB cable connecting both boards.
USB works fine so that is not the problem. As Pi and SKR V1.3 board are close together I like to use simple 3 wire from the GPIO pins.
So I connect TX to RX and RX to TX and GND to GND.
But when I open the connection console it will not connect.

What did you already try to solve it?

XI. Swapping ports used by GPIO and Bluetooth
The first thing to enable serial connection is to swap ports used by the GPIO (soldered pins) and the internal Bluetooth chip. We need to add a line in the config file on the boot partition.

sudo nano /boot/config.txt

Move the cursor to the very end and add:

dtoverlay=pi3-miniuart-bt

XII. Disabling the serial console

Moving to another config file, where part of the code must be deleted to disable serial console.

sudo nano /boot/cmdline.txt

Look for following string (text) and delete it

console=serial0,115200

XIII. Rebooting RPi

For all changes to take effect, please reboot your Raspberry Pi Zero W.

XIV. Adding serial port

Last part of the configuration is in the web interface. Open your browser and type either "octoprint.local" or the IP address of the RPi Zero W. You might be greeted with the welcome wizard, please go through it first.

As soon as you arrive at the home screen, open "Settings" (top right), head to "Serial Connection", then "Additional serial ports" and insert following:

/dev/ttyAMA0

Save the change and reboot OctoPrint. After reboot, select the new port and connect to your printer.

Logs (octoprint.log, serial.log or output on terminal tab, ...)

Connecting to: /dev/ttyAMA0
Changing monitoring state from "Offline" to "Opening serial port"
Connected to: Serial<id=0x6adc4a30, open=True>(port='/dev/ttyAMA0', baudrate=250000, bytesize=8, parity='N', stopbits=1, timeout=10.0, xonxoff=False, rtscts=False, dsrdtr=False), starting monitor
Changing monitoring state from "Opening serial port" to "Connecting"
Send: N0 M110 N0*125
Unexpected error while reading serial port, please consult octoprint.log for details: IOError: '[Errno 25] Inappropriate ioctl for device' @ comm.py:_readline:2739
Changing monitoring state from "Connecting" to "Offline (Error: IOError: '[Errno 25] Inappropriate ioctl for device' @ comm.py:_readline:2739)"
Connection closed, closing down monitor

Additional information about your setup (OctoPrint version, OctoPi version, printer, firmware, ...)

OP > Version 1.3.11

Marlin 2.0 settings for a working USB connection Between SKR V1.3 and PI3 with Octoprint.

Port set @ 250000 bps

/**

  • Select the serial port on the board to use for communication with the host.
  • This allows the connection of wireless adapters (for instance) to non-default port pins.
  • Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
  • :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
    */
    #define SERIAL_PORT 0

/**

  • Select a secondary serial port on the board to use for communication with the host.
  • This allows the connection of wireless adapters (for instance) to non-default port pins.
  • Serial port -1 is the USB emulated serial port, if available.
  • :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
    */
    #define SERIAL_PORT_2 -1

Your assistance is appriciated as more SKR users are stuck to get this working.

Thanks, Paco

2 Likes

Problem solved.
For some reason "dtoverlay=pi3-miniuart-bt" was not added in the boot file.
Connection is now possible by 3 wire and USB.

Thanks, Paco

1 Like

You may want to add a ferrite core around those three wires you have between the Pi and the printer.

Hi, could you please share more details how did you connect PI3 and SKR 1.3, I have same boards and thinking to ditch usb cable as both of them are in the same case anyway. Could not find any info on google how to do it. Tnx, A

OutsourcedGuru, thanks for the tip.

alesm,

Enjoy the file.....
Can also be found in the Bigtreetech facebook group.

BIGTREETECH SKRV1.3 guide 2019 - 6.zip (1.8 MB)

2 Likes

Hey Paco,

I am a bit new to 3d printing and Raspberry PIs so forgive me if this is a silly questions...

Will this approach also provide power to the PI? Also, would it be possible to post a picture or describe the wire connection on the SKR side a bit more? I'm a bit confused what you mean by "RXD0 to TX (cross linked)"

Any help would be greatly appreciated, and again sorry if these are silly questions :slight_smile:

With three wires (transmit, receive, ground) no power should be provided either way for powering anything.

You have to power the PI always with separate 5 volt/3A anyway by the USB input. The three wires are pure for signal.

The Pi and the SKR both have TX and RX pins. You connect the TX (PI) to RX (SKR) and the RX (PI) to the TX (SKR). This means cross connection. I cant explain better.

This is great thanks you! I'm still having issues getting it to connect but I'm closer :slight_smile:

Thank you Paco!!! Much appreciated.

Still having trouble getting a successful connection...

Has anyone else had luck? I have followed the steps a dozen times at this point and feel like i have to be missing something. Basically, everything is up and running but OctoPrint will not connect I have tried /dev/ttyAMA0 and /dev/serial0 everything else in the PI is set correctly and I have checked the connections. Any other tips? Could the SKR be disabling those pins somehow?

Any other advice would be appreciated I really want to get this going :slight_smile:

I think I'm getting closer...

I can now get OctoPrint to receive but it never gets an ok status...

Recv: T:23.75 /0.00 B:23.75 /0.00 @:0 B@:0

Just keeps listing these forever.

Did you also do...

enable_uart=1

And disable the getty service?

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

@ OutsourcedGuru and others.

My Pi failed yesterday out of the blue so I had to flash a new Octopi to the card.
So I had to perform the same staps again to get serial communication with three wires.

I performed the same steps as before but did not did the steps mentioned by Outsourced.
No serial connection where it worked before fine.
So I performed the mentioned extra steps.
Did you also do...

enable_uart=1

And disable the getty service?

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

And BINGO it works.

I will next week try and other SD card and try again if the last three steps are needed.

So if your connection is currently not working give it a try again.

Happy melting plastic.

1 Like

Not wanting to necro an old post but I need what is probably a very simple question answered.

Where are these three pins located on the SKR 1.3?

I see 2 sets of pins with those designations one is on the TFT header and the other the AUX1 header, which of these are you supposed to use?

Use the middle three of the TFT header, or the Gnd/Tx/Rx of the AUX header ... they're all connected so whatever is easiest.

Is there any reason I can't wire the 4 TFT ports on an SKR 1.3 straight to ports 4-10 on a Pi 3?

The TFT ports on an SKR 1.3 are +5V/GND/TX0/RX0 and ports 4-10 on a Pi3 are...5V/GND/TXD0/RXD0? It seems like this port on the SKR1.3 was made to both power and communicate with a Pi via a single connection?

Hi @illuminerdi!

Have you switched the RX/TX lines?

I haven't even tried it yet because I don't know if it will fry something or not...

switching tx rx will not fry anything.