I am trying to use emonupload to change the AVR software for direct serial output.
My setup is a RPi 3, Nov16 release of emonpi SW, EmonTXv3.4.1 (dated March 2015) with RF69 module.
When I first ran emonupload it updated itself and created all the firmware folders and copies of latest firmwares.
I initially tried with direct wired connection from the ISP connection on the Emontx to the GPIO header of the Rpi and can see the serial output of the emontx when using option ‘s’ of emonupload but it wouldnt program a new firmware because it couldnt find a valid usb port.
So I connected a CP2102 usb-serial converter (NOT the openenergy one) between the Rpi and emontx ISP port and got a similar result.
In both cases, when running the firmware upload option (x) I get the following output:
emonTx 3-phase Upload
Burning Bootloader sudo avrdude -p atmega328p -c avrispmkII -P usb -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m -U flash:w:bootloaders/optiboot_atmega328.hex:i -Ulock:w:0x0f:m avrdude-original: usbdev_open(): did not find any USB device “usb” (0x03eb:0x2104)
avrdude-original done. Thank you.
As a secondary observation of the emonupload program I notice that everytime I run it, it downloads the same firmware images, ie: RFM69Pi detected Testing internet connection… Internet connection detected Already up-to-date: emonUpload Already up-to-date. repos/openenergymonitor-emonth2 Already up-to-date. repos/openenergymonitor-emonth Already up-to-date. repos/openenergymonitor-emonpi Already up-to-date. repos/openenergymonitor-emontxfirmware Already up-to-date. repos/openenergymonitor-emontx-3phase
Additional info:
pi@emonpi(rw):emonupload$ lsusb
Bus 001 Device 005: ID 13ba:0018 PCPlay Barcode PCP-BCG4209
Bus 001 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@emonpi(ro):emonupload$
pi@emonpi(ro):emonupload$
pi@emonpi(ro):emonupload$ ls -la /dev/{tty{AMA,S,USB},serial}*
crw-rw---- 1 root dialout 204, 64 Jan 11 17:10 /dev/ttyAMA0
crw-rw---- 1 root dialout 4, 64 Jan 11 16:52 /dev/ttyS0
crw-rw---- 1 root dialout 188, 0 Jan 11 16:52 /dev/ttyUSB0
/dev/serial:
total 0
drwxr-xr-x 4 root root 80 Jan 11 16:52 .
drwxr-xr-x 15 root root 3380 Jan 11 16:52 …
drwxr-xr-x 2 root root 60 Jan 11 16:52 by-id
drwxr-xr-x 2 root root 60 Jan 11 16:52 by-path
pi@emonpi(ro):emonupload$
emonupload is designed to work using a USB Atmel AVR MkII ISP programmer.
However, the ISP programmer is only needed to upload the Arduino Uni / Optiboot bootloader. If you are trying to upload to an existing emonTx, the upload should be done via a serial UART programmer. Have you got a USB serial to UART programmer you can try and use? Any 5V USB to UART (FTFDI) programmer should work as long as the pinout is the same as the one from the shop: Kits, Components & Development boards - Programmers - Shop | OpenEnergyMonitor
Thanks Glyn,
I used my CP2102 based USB-Serial converter to connect between the Rpi usb port and the EmonTX ISP port, but the emonupload program seems to get stuck on that first bootloader command. The only keystroke that has any effect is CTRL which drops out of the whole python program.
I finally did have some success when I copied the avrdude string used in the ‘update now’ function on the administration page of emoncms, and modified the target firmware to be the direct serial version. I then reconfigured the connection so that the ISP port is wired to the GPIO pins on the RPi and voila!! it uploaded the firmware. (avrdude -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 115200 -U flash:w:…)
The output of the emontx now looks correct (5 sets of numbers and a CR/LF), though emonhub just repeats the invalid character message. (not in front of RPi ATM and cant quite remember the message).
Oops, I’ve confused the names of the ports. I was actually using the UART connector on the emonTx not the ISP port, I just called it the wrong name.
Emonhub just reports the ‘thread is dead’ message continually, though when I tap into the output of the UART port I can see that the message is correctly formatted.
emonTx V3 Direct serial Example 231.44 -1.41 282.66 0.04 224.85
2017-01-12 09:23:17,019 WARNING MainThread RFM2Pi thread is dead 2017-01-12 09:23:17,020 WARNING MainThread SerialDirect thread is dead
I have it wired as:
Rpi ------------------->emonTx UART
6 --------------------------Gnd
8 ---------------------------Tx
10 --------------------------Rx
7 --------------------------Rst