OctoPi not reading SD card or print progress from Ender 3 (SOLVED)

I found this thread because I was having the same issue. Copied the script in post #6 over, unchecked "Enable automatic firmware detection," and then checked "Always assume SD card is present," and all is well.

Thanks.

2 Likes

This seems to be working solution for me. to get here and see this option, you should uncheck the automatically detect printer firmware checkbox if selected. I didn't had to change anything else and SD card is active on my ender 3 from octopi !! Thanks for this solution...

New to Raspberry Pi, how does one "install" this code?

I'll just quote @zinob because that way you don't have to scroll back too far. This assumes that you have figured out how to SSH into your RPi using PuTTY (on Windows), ssh (on Linux), or something else on macOS.

The easy and quite ugly way of installing the plugin is to just connect to octopi via SSH (or login as the effective octoprint user on your machine) copy this snippet (which is just @b-morgan s code) and paste it straight into the terminal:

cat > /home/pi/.octoprint/plugins/convert_TF_SD.py << EOF
# coding=utf-8
from __future__ import absolute_import

def convert_TF_SD(comm, line, *args, **kwargs):
    if "TF" not in line:
        return line
    goodline = line.replace("TF","SD")
    return goodline

__plugin_name__ = "Convert TF to SD"
__plugin_version__ = "1.0.0"
__plugin_description__ = "Convert TF to SD in printer responses"
__plugin_hooks__ = {
    "octoprint.comm.protocol.gcode.received": convert_TF_SD
}
EOF

sudo service octoprint restart

Thank for the clarification. I get no file listing in OctoPi unless I type M20 in the OctoPi terminal window and the list is only visible in the terminal window.

First of all, thanks a lot for the code, I've just installed OctoPrint 1.3.12 a week ago and this issue is one of those I had left to resolve for later.

Hardware: Omega2
OS: OpenWRT

I made a simple enhancement by removing the temporal variable 'goodline' and just returning the resulting replaced string:

# coding=utf-8
from __future__ import absolute_import

def convert_TF_SD(comm, line, *args, **kwargs):
    if "TF" not in line:
        return line
    return line.replace("TF","SD")

__plugin_name__ = "Convert TF to SD"
__plugin_version__ = "1.0.0"
__plugin_description__ = "Convert TF to SD in printer responses"
__plugin_hooks__ = {
    "octoprint.comm.protocol.gcode.received": convert_TF_SD
}
1 Like

The same is happening to me, I have and ender 3 pro (BTW open to test stuff), and my results are the same as yours. I even wen to the pulgin manager and saw the plugin listed there. I enabled it and restarted octoprint, nothing happened.

Edit: Just went to plugin manager to check out the plugin, it's listed as "disabled" and even if i enable it, it ends up that way. I don't know what is happening but I'm all ears to solutions and testing.

I created an account just to say that this worked for me! Thanks!!!

1 Like

Thanks for great solution, @b-morgan, but it seems that the code needs an update, because of some defaults at latest 1.4.2 version. I had an issue running that as is (docker octoprint/octoprint:latest), system deactivated it at start as incompatible with Python version (3.8 for container), so I had to add this to make it work:

__plugin_pythoncompat__ = ">=2.7,<4"

and now my Ender works like a charm ))

Tested on my ender 5. Works fine! Great

where do I find this plugin? How can I install it on Octoprint?

You will find the plugin (actually a bash script) below. I have updated it with all the suggestions in this thread.

The easy and quite ugly way of installing the plugin is to just connect to octopi via SSH (or login as the effective octoprint user on your machine) copy this snippet and paste it straight into the terminal:

cat > /home/pi/.octoprint/plugins/convert_TF_SD.py << EOF
# coding=utf-8
from __future__ import absolute_import

def convert_TF_SD(comm, line, *args, **kwargs):
    if "TF" not in line:
        return line
    return line.replace("TF","SD")

__plugin_name__ = "Convert TF to SD"
__plugin_version__ = "1.0.1"
__plugin_description__ = "Convert TF to SD in printer responses"
__plugin_pythoncompat__ = ">=2.7,<4"
__plugin_hooks__ = {
    "octoprint.comm.protocol.gcode.received": convert_TF_SD
}
EOF
chmod +x /home/pi/.octoprint/plugins/convert_TF_SD.py
sudo service octoprint restart
2 Likes

Since OctoPrint 1.5.0 you can also install single file plugins (.py) via the plugin manager, even from an URL. I just threw your plugin into a gist at

Anyone who needs it should be able to install it by entering https://gist.github.com/foosel/9ca02e8a3ea0cb748f4b220981eab12d/raw/convert_TF_SD.py into the plugin manager's "from URL" field in the "Get more..." dialog:

2 Likes

Thanks Gina!!!

Thank you very much!

After the latest OctoPi update, this plugin seems to break the connection between OctoPi running on an RPi4 and the Creality Ender 3.

I was previously printing without issue (with this plugin enabled), but now the printer loses connection as soon as the plugin is installed. I've included console log excerpts below, both with and without the plugin enabled (on a freshly reset and configured OctoPI).

Is anyone else experiencing this issue, and/or does anyone have any suggestions for troubleshooting this issue.

With Plugin Disabled, Working Normally

Changing monitoring state from "Offline" to "Opening serial connection"
Connecting to port /dev/ttyUSB0, baudrate 115200
Changing monitoring state from "Opening serial connection" to "Connecting"
Connected to: Serial<id=0xaafd8310, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=10.0, xonxoff=False, rtscts=False, dsrdtr=False), starting monitor
Send: N0 M110 N0*125
Recv: start
Recv: echo: External Reset
Send: N0 M110 N0*125
Recv: Marlin 1.1.6.2
Recv: 
Recv: echo: Last Updated: 2019-07-26 | Author: Ender-3
Recv: echo:Compiled: Aug  4 2019
Recv: echo: Free Memory: 10078  PlannerBufferBytes: 1232
Recv: echo:TF card ok

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Your printer's firmware is known to have a broken implementation of the
communication protocol. This may cause print failures or other annoyances.
You'll need to take additional steps for OctoPrint to fully work with it.

Learn more at https://faq.octoprint.org/warning-firmware-broken-creality-tfcard
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Recv: Init power off infomation.
Recv: size:
Recv: 585
Recv: ok
Send: N0 M110 N0*125
Changing monitoring state from "Connecting" to "Operational"
Recv: ok
Send: N0 M110 N0*125
Recv: ok
Send: N1 M115*39
Recv: FIRMWARE_NAME:Marlin Creality 3D SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:Ender-3 EXTRUDER_COUNT:1 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Recv: Cap:EEPROM:1
Recv: Cap:AUTOREPORT_TEMP:1
Recv: Cap:PROGRESS:0
Recv: Cap:PRINT_JOB:1
Recv: Cap:AUTOLEVEL:0
Recv: Cap:Z_PROBE:0
Recv: Cap:LEVELING_DATA:0
Recv: Cap:SOFTWARE_POWER:0
Recv: Cap:TOGGLE_LIGHTS:0
Recv: Cap:CASE_LIGHT_BRIGHTNESS:0
Recv: Cap:EMERGENCY_PARSER:0
Recv: ok
Send: M21
Recv: echo:TF card ok
Recv: Init power off infomation.
Recv: size:
Recv: 585
Recv: ok
Send: M155 S2
Recv: ok
Recv:  T:25.74 /0.00 B:34.43 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.53 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.43 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.40 /0.00 @:0 B@:0
Recv:  T:25.85 /0.00 B:34.40 /0.00 @:0 B@:0
Recv:  T:25.94 /0.00 B:34.24 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.35 /0.00 @:0 B@:0
Recv:  T:25.97 /0.00 B:34.30 /0.00 @:0 B@:0
Recv:  T:25.74 /0.00 B:34.30 /0.00 @:0 B@:0
Recv:  T:25.99 /0.00 B:34.22 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.22 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.17 /0.00 @:0 B@:0
Recv:  T:26.02 /0.00 B:34.19 /0.00 @:0 B@:0
Recv:  T:25.88 /0.00 B:34.06 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.17 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.17 /0.00 @:0 B@:0
Recv:  T:25.94 /0.00 B:34.17 /0.00 @:0 B@:0
Recv:  T:25.97 /0.00 B:34.11 /0.00 @:0 B@:0
Recv:  T:25.94 /0.00 B:34.17 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.14 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.14 /0.00 @:0 B@:0
Recv:  T:25.94 /0.00 B:34.11 /0.00 @:0 B@:0
Recv:  T:25.94 /0.00 B:34.11 /0.00 @:0 B@:0
Recv:  T:25.91 /0.00 B:34.09 /0.00 @:0 B@:0
Changing monitoring state from "Operational" to "Starting"
Send: N0 M110 N0*125
Recv: ok
Changing monitoring state from "Starting" to "Printing"
Send: N1 M140 S90*93
Recv: ok
Send: N2 M105*37
Recv: ok T:25.99 /0.00 B:33.98 /90.00 @:0 B@:0
Send: N3 M190 S90*82
Recv:  T:25.99 /0.00 B:33.98 /90.00 @:0 B@:0 W:?
Recv:  T:26.08 /0.00 B:34.17 /90.00 @:0 B@:127 W:?
Recv:  T:25.97 /0.00 B:34.17 /90.00 @:0 B@:127
Recv: echo:busy: processing
Printer seems to support the busy protocol, will adjust timeouts and set busy interval accordingly

With Plugin Enabled, Lost Connection

Changing monitoring state from "Offline" to "Opening serial connection"
Connecting to port /dev/ttyUSB0, baudrate 115200
Changing monitoring state from "Opening serial connection" to "Connecting"
Connected to: Serial<id=0xa9b13530, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=10.0, xonxoff=False, rtscts=False, dsrdtr=False), starting monitor
Send: N0 M110 N0*125
Recv: start
Send: N0 M110 N0*125
Recv: echo: External Reset
Recv: Marlin 1.1.6.2
Recv: 
Recv: echo: Last Updated: 2019-07-26 | Author: Ender-3
Recv: echo:Compiled: Aug  4 2019
Recv: echo: Free Memory: 10078  PlannerBufferBytes: 1232
Recv: echo:TF card ok
Recv: Init power off infomation.
Recv: size:
Recv: 585
Recv: ok
Send: N0 M110 N0*125
Changing monitoring state from "Connecting" to "Operational"
Recv: ok
Send: N0 M110 N0*125
Recv: ok
Send: N1 M115*39
Recv: FIRMWARE_NAME:Marlin Creality 3D SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:Ender-3 EXTRUDER_COUNT:1 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Recv: Cap:EEPROM:1
Recv: Cap:AUTOREPORT_TEMP:1
Recv: Cap:PROGRESS:0
Recv: Cap:PRINT_JOB:1
Recv: Cap:AUTOLEVEL:0
Recv: Cap:Z_PROBE:0
Recv: Cap:LEVELING_DATA:0
Recv: Cap:SOFTWARE_POWER:0
Recv: Cap:TOGGLE_LIGHTS:0
Recv: Cap:CASE_LIGHT_BRIGHTNESS:0
Recv: Cap:EMERGENCY_PARSER:0
Recv: ok
Send: M20
Recv: Begin file list
Recv: /SOURCES/ALERT.GIF 1046
Communication timeout while idle, trying to trigger response from printer. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves.
Send: M155 S2
Communication timeout while idle, trying to trigger response from printer. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves.
Send: M105
No response from printer after 3 consecutive communication timeouts, considering it dead. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves.
Changing monitoring state from "Operational" to "Offline after error"
Connection closed, closing down monitor

Hello @ndmax !

For last post in thread is already over one year old and this thread is marked with a solution, I recommend to open a new thread in Get Help with all the information that are requested in the template. That makes it much more easier for us to help.

Also keep in mind, that from OctoPrint 1.8.0 on only Python 3 is used.
If that plugin runs on Python 2.7, it will not work.
We could see that in a full log.

seems to be dying during the file list operation. does it do the same if your sd card isn't in the printer? it could be corrupted in some way or some other issue that causes it to lock up and your printer isn't responding anymore.

Thank you @jneilliii for your help; I reformatted the SD card and everything seems to be working normally.

Β―_(ツ)_/Β―

1 Like

To clarify the situation if anyone else reads about the 'TF to SD' plugin 'breaking the connection', without this plugin OctoPrint is not able to read the files from the SD card. When the plugin is enabled, it asked for a file list and the printer crashed - the plugin was not the cause of the problem.

2 Likes