Topic: name of internal serial port on Chumby One

Hello all, I am trying to talk to the internal serial port on my Chumby One.  I soldered up a connector, and loaded Python and PySerial onto a usb stick.  I can launch python and import serial; I can't figure out which of the tty variants in /dev I should use when starting the serial port with the command:

ser = serial.Serial('/dev/tty[some number]', 38400, timeout=2)

Does anyone know which TTY is linked to the internal port?

Re: name of internal serial port on Chumby One

I believe it is ttyAM0.

Just in case, hopefully you know it's not a RS232 serial port, but rather 3.3V TTL.

Re: name of internal serial port on Chumby One

Thank you for your help, skcolb!  The device I am trying to read data from is also 3.3v TTL.  I tried the ttyAM0 port, and am getting a different error message:

>>> import serial
>>> ser = serial.Serial('/dev/ttyAM0', 38400, timeout=1)
>>> ser.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/usb/python2.6-chumby/lib/python2.6/site-packages/serial/serialposix.py", line 456, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)

The weird thing is I can read data off the device just fine using an Arduino connected to the Chumby USB port to create a USB <-> serial connection (ttyUSB0).  Could this be something to do with the serial protocol of the internal serial console?

Re: name of internal serial port on Chumby One

What are you trying to do?  That serial port is default as the serial console.  Would it not be easier to use a USB->Serial device connected to the Chumby USB?

Re: name of internal serial port on Chumby One

I'm trying to read data off a sensor (Zeo EEG), and then send it across the network.  It does work with an Arduino acting as a USB to serial converter, but I'd like to make the install as small as possible, and avoid USB hubs (since I'm running Python off a USB stick, the USB port is taken).

How is console different than a regular serial port?  I was reading somewhere about turning off debugging on the console, perhaps that is stopping PySerial from using the port?

Thank you for your help!

Re: name of internal serial port on Chumby One

Assuming you're using a ChumbyOne (your first post suggests so) you can attach another USB device on without resorting to a hub.  There is an USB footprint available at the back of the mainboard near the LCD connector.  I've soldered a USB socket here for myself to use.

My opinion is that this would be alot easier smile

The serial console is very useful and might be tricky to turn off...

Also...

Why run Python off a memory stick?  It would be easier (and smaller) to run it on /mnt/storage wouldn't it?

I have a python 2.7.1 package that installs onto /mnt/storage here :- http://code.google.com/p/madox/downloads/list

Re: name of internal serial port on Chumby One

Oh, good ideas, thank you!  I saw the USB footprint, wasn't sure it would be easy to access it in the chumby OS; glad to hear it is.  Did you use a component like this:

http://www.sparkfun.com/products/9011

I also didn't know you could run python internally, which will be fun to try, thank you for the link.

As for the serial console, I'm curious: what do you use it for?

Re: name of internal serial port on Chumby One

Hi Todicus,

1)The Chumby One had a very specific footprint for that spare USB connector, the one from sparkfun probably won't fit.  I ordered one from "element14" that matched the footprint (with those through hole positioning pins...).  Keep in mind it is a PITA to solder onto [Either that or I suck].

2)You can run Python on the /mnt/storage partition just fine without an external USB.  That should free up the USB for your USB-serial.

Here's a video of a 'hardware virgin' Chumby One driving a servo board using USB->Serial with pyserial :- http://www.youtube.com/watch?v=cB-6qN8dbVQ

That's using the python package I linked you.

3)When shit doesn't work - it great for debugging especially with WiFi problems, start up scripts crashing etc etc.

Have you already 'opened up' your Chumby?

Re: name of internal serial port on Chumby One

Answering (3) again, Serial console is wonderful for debugging say a brand new OpenEmbedded build when you can't be sure you'll get WiFi working...  Here's a video showing OE booting and its output via serial console...

http://www.youtube.com/watch?v=Smmis9jMWdg

Re: name of internal serial port on Chumby One

Whoa, super-rad!  Is it plugged directly in to the webcam, or grabbing frames off wifi?

Re: name of internal serial port on Chumby One

Webcam is connected to that 'spare USB connector' I mentioned to you before, forgot to mention that smile

The video makes it look jerky whereas its actually very smooth.  I am using Python+Pygame for the webcam and display.

Just tweaking the i2c-tools recipe at the moment to get py-smbus included, then I can use the I2C on the Chumby!

Re: name of internal serial port on Chumby One

This OpenEmbedded seem pretty great!  Do you select the Python modules you want included in a custom OE build?  Does it really take hours to build image, as described on this page:

http://wiki.chumby.com/index.php?title= … oldid=3003

I'm curious to see where you go with this!

13 (edited by Madox 2011-06-29 10:22:12)

Re: name of internal serial port on Chumby One

My current recipe...takes a few hours to build from scratch initially but then you only need to do that once...

madox@madox-desktop:~/chumby-oe/meta-chumby$ cat recipes/images/chumby-madox-image.bb

#Angstrom bootstrap image

IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"

ANGSTROM_EXTRA_INSTALL ?= ""

ZZAPSPLASH = ' ${@base_contains("MACHINE_FEATURES", "screen", "psplash-zap", "",d)}'

DISTRO_SSH_DAEMON ?= "dropbear"
PREFERRED_PROVIDER_virtual/libgl = "mesa-xlib"

DEPENDS = "task-base \
           task-base-extended \
           ${SPLASH} \
           ${ZZAPSPLASH} \
config-util regutil-${CNPLATFORM} \
       "

IMAGE_INSTALL = "task-base task-base-extended task-sdk-native \
           kernel-modules \
           bash vim ${DISTRO_SSH_DAEMON} file nano \
           i2c-tools \
           python-pyserial python-imaging python-pyopenssl python-lxml \
           python-pyopengl python-pygame python-stringold python-ctypes \
           python-compile python-core python-dev python-distutils \
           python-netclient python-netserver python-zlib python-io \
           python-numeric python-numpy python-readline \
           python-shell python-textutils python-threading python-unittest \
           python-pprint python-fcntl \
           libgl libglu \
           dhclient wpa-supplicant python-netclient \
           hostap-utils hostap-daemon dnsmasq \
           tslib tslib-calibrate tslib-conf tslib-tests \
           madox-boot-setup \
           ${ANGSTROM_EXTRA_INSTALL} \
           ${SPLASH} \
           ${ZZAPSPLASH} \
config-util regutil-${CNPLATFORM} \
        "

IMAGE_LINGUAS = ""

inherit image