Monday, July 04, 2016

New controller woes and wins

I've been converting my printer (Eclips3D, not the Folger 2020) to use a Smoothieware-compatible board. I settled on the Azteeg X5 Version 3. There's a long story about another board I tried, which I might go into separately. The Azteeg is a nicely-engineered board. Some of the features I like are built-in Ethernet, digital control of the stepper voltages and swappable stepper drivers. I got 1/32 stepper drivers using the new SD5984.

Getting going with this has been a challenging experience.

My previous configuration was a RAMPS board with Marlin, and I connected to it from Repetier Host on a Windows machine. The first problem I had with Smoothieware was that Windows won't maintain a serial connection to it. In Repetier, the connection times out after a few minutes, and the same thing happens using a terminal connection (such as PuTTY). In a posting on the Smoothieware forum, I described the problems in detail. The short summary is:
  • it only happens on Windows.
  • it happens on both Windows 7 and Windows 10.
  • it happens on more than one Windows machine.
  • it isn't fixed by making sure Windows keeps the USB hub out of suspend mode.
  • it happens with a different Smoothieware-compatible board as well.
The Smoothieware people were not very helpful in solving this problem: the thread went into a discussion of problems with Repetier and putting the blame on Windows. Neither of these holds up well. It's not Repetier, as the problem appears with PuTTY. And it's unconvincing that the problem is a systemic one in Windows, as no other device, from RAMPS, Arduino and other embedded boards up to commercial peripherals has ever shown this problem. My best guess is that it is some interaction between the USB stack on Windows and the implementation on the board, probably in the firmware. The thread ended with no resolution.

Given this unsolved problem, there are a couple of ways forward: either access the printer over its Ethernet interface, or switch to a different computer and continue to use USB. There is actually one other option, and that to switch my computer to Linux. This doesn't really work as I have some unrelated software, notably the Google Drive integration, with no counterpart on Linux.

Repetier Host allows you to connect over telnet to a networked printer. It will establish the connection OK, but printing is simply no good. There is a long delay (from a few hundred milliseconds up) after each command, so the print progresses in tiny steps. This probably means Repetier doesn't implement Telnet at a low enough level, using TCP/IP flow control.  Another thing I noticed is that the manual commands make relative movements: click to move by 10 in the X direction and it will move to position X=10 instead. This didn't happen with RAMPS+Marlin. According to the Smoothieware people, the default is absolute movement, but its puzzling why switching boards should cause Repetier to behave differently, as the configuration is broadly the same. The thread on this was again not very helpful.

Another solution is to use Pronterface. It's weak sauce compared to Repetier: no real-time display as you print, no ability to easily drag the objects around to position them, an ugly and inflexible user interface, and not even a kill print button. I use kill print a lot, when I start a print and the first few layers go wrong, or I realize I sliced it with the wrong settings. In Pronterface, the closest is to disconnect, as far as I can tell. It does have one major advantage: printing over TCP/IP works properly. The Smoothieware people recommend Pronterface over Repetier frequently on the forum. If only it wasn't so weak on features and so amateurish in its presentation.

The alternative to connecting by TCP/IP is to use a second computer which a USB connection to the printer and some suitable server software. I had a Raspberry Pi already on my home network, used very occasionally for backups and as a household web server. The best known printer software for the Pi is OctoPrint. You can drag files to its web interface and print them from it. It has, if you install it correctly, Cura engine built in. Some of the features missing in Pronterface are there, though it lacks good preview and arrangement panes. It connected fine, with just the need to reboot after plugging in the USB cable to the printer, and a test print went fine.

Repetier make a server in addition to Repetier Host and there is a build which runs on the Pi. You can upload files to it in a similar way. This also worked, though with a little bit of to-and-fro to set the printer config. It seemed best to change a few setting at a time, then save them. The display in the server was a little weak: it didn't show the temperature anywhere, and there is no preview. However, it's greatest value is that you can set up Repetier Host to communicate with it with full control of the printing and real-time display of the moves it is making.

Based on a couple of test prints, this set up seems to work well. I get all the things I like about the user interface in Repetier Host, together with something which will actually talk to the printer without losing the connection. I will try it more soon and see how it goes.

No comments: