Table of Contents

The Smoothie project's TODO list

This page lists all of the projects the community is working on, and those that are planned.

This includes improvements on the existing, new features, refactors, new hardware and documentation efforts.

If you are looking to help the project, but do not know where to start, this is the place to get an idea what is going on within the project right now.

Contributing

If you have an idea for a new feature or any kind of improvement, please contact the community via IRC or the mailing lists to discuss it. You can also contact wolf.arthur@gmail.com with any questions or to chat about implementation details.

Smoothieware v1 firmware

The Smoothieware firmware that runs on the Smoothieboard v1 ( Smoothieware v1 ) has a lot of features, and has received a lot of love over the years. But there are many things we want to improve, and new features we want to implement or experiment with :

This is expected to result in a much saner codebase, smoothness/performance improvements, and to make it easier to implement some new features, like S-curve acceleration, 6-axis support and some extruder features.This is going to require, amongst other things, a massive rewrite of the Extrude and Laser modules.

6-axis support

Once the step generation improvements and s-curve support have been implemented, it will be much easier to add proper 6-axis ( XYZABC ) support into Smoothie. This is currently done by using the Extruder module, which has some limitations, doing it properly would be a good improvement.

File-based panel system

There is a project to explore using files on the SD card to describe the panel menu system, instead of using code.

This would allow for multi-language, user customization, richer menus with more options, and new features.

However, it's not clear yet if this would be fast enough to be comfortable to use, and it's not possible to use files while a file on the SD card is playing, so that is a problem that would need to be solved ( possibly by having a separate, simpler system while playing files ).

Several persons have written implementations, but they were too complex to be merged. The work on step generation ( per-step accel, s-curve, 6-axis etc ) will involve some refactors that would then make this simpler to implement.

If you are interested in helping with this, don't hesitate to ping us.

Queue refactor

There is a planned refactoring ( or at least an exploration to see if it would be practical ) of the “queue” system in Smoothie, that would make the code saner, would use less ram, and would allow for more performance/new features.

It is likely this will not be tried before a lot of other things happen ( including Smoothie2 firmware ) because it would change a lot of things in the firmware.It is also possible we will move step by step towards this, at least for part of it ( Jim Morris already started this by removing occurences of on_gcode_execute ).

NOTE this is no longer required after the motion control merge. It basically is not an issue now.

AÂ first step towards tool changing is to implement recursive file playing. Work on that is ongoing here.

Serial chaining

This would allow forwarding of Gcode strings to other Smoothieboards over serial, therefore allowing use of boards as “slaves”.This would be a very powerful tool.The specification is available here
If you want to help with this, don't hesitate to contact us

LUA scripting

[https://en.wikipedia.org/wiki/Lua_(programming_language) Lua] is a very simple programming language. It's quite commonly used to add “scripting” support to applications. An idea that has been floating around ( for v2 Smoothie ) would be to experiment with ( we don't know if it's possible ) adding a LUA interpreter to Smoothie. It'd have to be simple enough that it doesn't take too much RAM, but if it were made to work, it'd add the ability to create scripts that Smoothie would trigger when it receives specific Gcodes, or when specific internal events occur. Those scripts could check for variables, send Gcodes internally, activate external peripherals etc. This would be an extremely powerful tool, but we don't know if it's feasible, and would like to find out.

New error reporting system

We are working on a new system to report errors in a more consistant and useful manner, see the specification here

M1 support

Support for a Gcode that pauses until user input. User input can be a button or a Gcode. We possibly only need a Gcode, since a button can then be created with Switch.

Smoothie2 firmware

Basic functions such as serial communication, configuration, planning and step generation, have been ported, but many others like temperature control, USB, Ethernet, SD card support, etc, are still missing. We need your help moving the project forward.

Many have already offered to help, and at this point, several are at the point where they have hardware to work on, and are starting to get familiar with the codebase. But this is a huge project, and here more is better ! So come join the effort :)

Below are a few of the ones that need the most work. Because these are difficult to implement, it's hard finding people to work on them. If you think you are capable of doing any of those, please please please contact us, we really need help on these.

USB

Like the v1 board, the v2 board will have a USB port.

On the v1 board, that port exposes a composite device ( Serial + Mass storage ) to the host computer. However, Mass Storage just plain sucks. The computer can mess things up anytime without the board being able to prevent it, the board can't safely write to it's own SD card, corruption of the card is a common thing, etc.

That'd be a much safer way for the computer to access the card, it'd allow the board to have control, write to the SD card itself ( which would allow for implementation of many new features ), present virtual files, etc.

But implementing MTP is a really huge task. If you think you could do this, please please contact us. There are even some companies likely ready to pay some money for this to encourage implementation.

Ethernet

The v1 board has an Ethernet port, the v2 board too. We need Ethernet, TCP/IP, a web and telnet server, to be implemented in the v2 firmware, the same way it was on the v1.

I ( Arthur ) have no idea how much work it'd be. There is a few implementations of web servers for LPC4337 available on the net, so it may simply be a matter of mashing that together with the v1 implementation.

The v1 Ethernet implementation has some limitations and problems, it's possible with the better v2 hardware, a better implementation could be done.

SD card

Smoothie2 hardware

[https://github.com/logxen Mark Cooper] is designing the Smoothieboard v2, v2-pro, and v2-mini boards, in Kicad, so that is pretty much covered for now.

The boards are now in alpha, once the alpha board has been tested, a beta board will be designed, and the files for it will be published. At that time we'll need help reviewing the design. If you are interested, contact us.

Other projects related to the v2 hardware :Â

Extension boards

The Smoothie firmware is trying very hard to be as modular as possible, and to make it easy to do weird things. In v2, we want to make the hardware even more modular/hackable than it already is.

To do this, we plan on having a set of standard connectors ( based on the gadgeteer pinout ) :

We are looking for help with this, if you know PCB design, you are very welcome to contribute, most extension boards are quite easy to design.

Infinite extruders

There is a project to create a system of chainable boards that would connect to a Smoothieboard v2. You would be able to chain as many as you want, and each board would control a separate tool. We plan on implementing several different tools, but the first one that is currently being worked on is the Extruder board.

Documentation

The http://smoothieware.org website, which contains the documentation for the project, is a wiki. This means you can edit any page to add information or make it clearer.

Help on the documentation is extremely welcome. We want the best documentation possible. The documentation is extremely complete, compared to what is common in the community, but there are plenty of things that are missing still, and probably even more important, there are parts of the documentation that need to be made clearer.

Video tutorials

If you have an interest in helping with this, mostly by writing synopses for the videos ( graphics would also be useful once the synopses are further along ), please contact us, help is very much needed.

This is a great way of helping the project that does not require knowing how to code or how to design PCBs. Actually, having the point of view of a complete beginner is a good thing for this project, so everybody, pro or newbie, is extremely welcome to help. If you feel like Smooothie helped you, this is a great way of helping back.

Wiki

The Smoothie wiki has a todo list all of it's own, here it is :

Make a more «commercial» homepage and see if *this time* people don't complain about the doc not being on the homepage

Web interface

Smoothieboard has an Ethernet port, and we have huge ambitions for it. The current web interface it serves is a bit limited. But there are several projects being worked on to replace it, and other ethernet-related projects within the community :Â

Better web UI

There is a plan to have the Smoothieboard auto-detect if an interface is present on the SD card, and display that if it is present. And also to start shipping this interface with the SD cards. This way we'd save on flash on the card, and we'd have a better web interface for users.

Fabrica

[https://github.com/arthurwolf/fabrica Fabrica] is a project for a simple to use, panel-type GUI to control Smoothieboards. It's web-based, has very ambitious goals, and is intended to be used on android tablets or smartphones, which are about the same price as the current LCD screens, but are much better.

ESP8266 support

Liam Jackson is working on implementing a firmware for the ESP8266 that would make it behave exactly like the Ethernet port on the Smoothieboard, essentally adding Wifi support to the board transparently. Github repository. If you want to help, contact us.