How to directly send G-code to printer from a Linux terminal? Should it be possible to directly send G-code to the printer serial connection using pipes under Linux?

Example:

echo M106 &gt; /dev/ttyUSB0


My controller runs at 250000 baud, I have tried setting the TTY baud rate to 250 kBd with: 

stty -F /dev/ttyUSB0 250000


But, unfortunately, this particular baud rate appears to be unsupported under Ubuntu, giving the error: 

stty: invalid argument ‘250000’
For direct low-level printer control from a terminal, without specific software, I found the following solution with full credit thanks to user: http://stackexchange.com/users/6463673/meuh

Sharing here as may be of use to other users in the 3d Printing community, and I was unable to source a "complete" solution to this elsewhere.



Step 1)
Create a custom python script that allows you to set arbitrary baud rates (make executable with chmod u+x).

#!/usr/bin/python
# set nonstandard baudrate. Original Question: http://unix.stackexchange.com/a/327366/119298
import sys,array,fcntl

# from /usr/lib/python2.7/site-packages/serial/serialposix.py
# /usr/include/asm-generic/termbits.h for struct termios2
#  [2]c_cflag [9]c_ispeed [10]c_ospeed
def set_special_baudrate(fd, baudrate):
    TCGETS2 = 0x802C542A
    TCSETS2 = 0x402C542B
    BOTHER = 0o010000
    CBAUD = 0o010017
    buf = array.array('i', [0] * 64) # is 44 really
    fcntl.ioctl(fd, TCGETS2, buf)
    buf[2] &amp;= ~CBAUD
    buf[2] |= BOTHER
    buf[9] = buf[10] = baudrate
    assert(fcntl.ioctl(fd, TCSETS2, buf)==0)
    fcntl.ioctl(fd, TCGETS2, buf)
    if buf[9]!=baudrate or buf[10]!=baudrate:
        print("failed. speed is %d %d" % (buf[9],buf[10]))
        sys.exit(1)

set_special_baudrate(0, int(sys.argv[1]))




Step 2) Run the script to set your baud rate.
./set_custom_baud_rate.py &lt;&gt; /dev/ttyUSB0 250000



Step 3) You can now monitor your printer output in a terminal window simply with:
 tail -f /dev/ttyUSB0



Step 4) And finally, open up a new terminal window, and you can directly send M or Gcode to your printer; example:
echo "M115" &gt;&gt; /dev/ttyUSB0