commandline operational - victronenergy/venus GitHub Wiki
This page explains how to change settings and/or update firmware for various Victron products which are connected to a GX device, for example the Cerbo GX, via the command line, ie ssh.
This document is part of the Venus OS developer documentation. The main document is the Venus OS wiki on github.
For more software developer oriented command line tips & tricks, see commandline - development.
Note regarding support: this document is made available for convenience only. There is no support on this type of using our products. Using the command line is outside normal use;
In case of questions, you can use the Venus developers mailing list, or the modifications space on Victron Community.
Our support staff on all official channels does not know how these tools can be used.
It is not at all necessary to use below command line instructions. We have far easier to use normal computer applications available:
Changing settings with products featuring a VE.Bus comm. port (Inverters, Multis and Quattros) is normally done with the VictronConnect App or VEConfigure.
Firmware updates are normally done with VictronConnect; and can also be done remotely.
To change settings remotely, use Remote VEConfigure.
Updating VE.Can connected products is done with VE Power Setup, when connected to the product locally.
For remotely firmware updating a VE.Can-connected product, use the VRM Portal.
Changing settings of a VE.Can connected product (except for the Lynx Shunt VE.Can, which can be altered on the Venus GUI, and of course then also via the d-bus from the command-line). Normally done on the LCD panel of the product itself.
Both firmware updating as well as changing settings is done using the VictronConnect App.
It also features remotely updating settings, as well as remotely updating firmware.
Updating firmware remotely is also available the VRM Portal.
See the Venus OS Root Access for an explanation on how to connect to the command line.
Besides accessing the command line, you might also need to send files back and forth. Use the Secure copy, or scp, for that.
Check firmware version:
root@CCGX:~# cat /opt/victronenergy/version
v2.06
Color Control GX
201612090913
Then to update, this depends on which version you are running. Up until v1.74 we were using opkg package updates. And then we switched to image based updates, and jumped with the version number to v2.00.
See here for how to update from v1.74 (or earlier) to v2.00 (or later). It is not possible to that remotely or from the commandline.
Checking for updates and triggering a new update is all done with /opt/victronenergy/swupdate/check-updates.sh.
For an introduction, run checkupdate.sh -help
. For more details, read
its
code.
To trigger an update check, run:
/opt/color-control/opkg-scripts/check-updates.sh
If there are new updates found, and if the GUI is running and automatic updates are enabled, the GUI will automatically initiate an update followed by a reboot. Otherwise, trigger the installation yourself with:
/opt/color-control/opkg-scripts/do-updates.sh
To change the Update-to setting, use set-feed.sh.
To check if the device is configured to automatically update, query /Settings/System/AutoUpdate
dbus -y com.victronenergy.settings /Settings/System/AutoUpdate GetValue
The response will be either:
Status | Meaning |
---|---|
0 | Automatic updates are disabled |
1 | Automatic updates are enabled |
To change the setting, simply do the following (replace # with either 0 or 1):
dbus -y com.victronenergy.settings /Settings/System/AutoUpdate SetValue #
To read the settings use:
/opt/victronenergy/mk2vsc -r -s dbus://com.victronenergy.vebus.ttyO1/Interfaces/Mk2/Tunnel
-s specifies the serial port to use. In the above example we use the
DBus MK2 tunnel. This is available when the vecan-mk2 service is active,
which it normally is. For a direct connection use -s /dev/ttyO1
Optionally -f can be used to specify a custom file name to write the settings to
The generated file (.rvsc or .rvms) can be opened and edited on a PC using VE Configure
Transfer the file to a computer running Windows, and which has the VEConfigure toolset installed.
On that computer, open the file by double clicking it, make the modifications, and save the file again.
Then transfer the new file back onto the GX device.
To write the settings use:
/opt/victronenergy/mk2vsc -w -s dbus://com.victronenergy.vebus.ttyO1/Interfaces/Mk2/Tunnel
Requires Venus v2.00 or later.
Using the vbdup tool. This can update firmware of the following products:
- Multi versions 26xxyyy/27xxyyy (minimum originally installed firmware, yyy needs to be 2xx or higher)
- MK3
Updating other VE.Bus devices, such as the VE.Bus BMS and Digital Multi Control panels is not possible with vbdup.
Updating a MultiGrid and also a MultiPlus-II is not (yet) possible with vbdup.
Make sure that the as well as routers or any other used communications equipment, are not powered by the VE.Bus devices. If they are, you'll lose power and connection as soon as the update is started, resulting in a dead system.
The product that you want to update needs to have application firmware running: just bootloader is not enough. The update starts with requesting the hardware IDs (VE.Bus discovery) from the running application. Those hardware IDs are then used to address the VE.Bus devices once in bootloader mode. After the discovery, the hardware IDs aare stored in a file. In case, for example because of a power loss, the update fails, vbdup will automatically use the hardware IDs stored in that file.
Read the console help before use:
root@beaglebone:~# vbdup --help
vbdup version 0.05
Vebus device firmware updater.
Supported products:
-MK3
-Multi versions 26xxyyy/27xxyyy
where yyy >= 2xx
WARNING:
Updating will reset any user defined settings to default!
If you want to keep your settings you must use VeConfigure, local or remote, to readout and save the settings.
After updating, you can use VeConfigure again to restore the settings.
Firmware updates currently do not work through the dbus tunnel. Please close the vecan-mk2 before using this feature
Note, When updating to Multi firmware version 4xx
Serial numbers where introduced with Multi firmware 4xx.
In VEFlash the user is requested to enter the serial number manually.
This code has no user interaction. We do not know the update order when multiple Multi's are connected.
Therefore the serial number will be generated using the unique target ID
Serial number format = tid######## where ##.. is the hexadecimal representation of the unique target ID.
Existing serial numbers when updating within the 4xx range will remain unchanged
Usage:
VBDUP OPTIONS:
-f, --file
vff/vfd vebus device firmware file.
COMMON OPTIONS:
-h, --help
Print this help.
--log-before <count>
When set to non zero <count> number of log lines, which are
not enabled themselves, are nevertheless shown before an
log which is enabled. For example an error message will be
preceeded by <count> warning and info messages which occured
before the error. Combined with -v also warning messages will
be preceeded by info messages
--log-after <count>
Like -log-before, but temporarily enables tracing of disabled messages
after a warning or error occured.
-s, --serial
the serial port to use (default /dev/ttyS0).
-i, --use-host-io-lines
Use host processor IO lines to control MK2/MK3 reset and VE.Bus standby.
-v --verbose
Enable log messages. Specifying multiple times increases verbosity.
Victron Energy B.V.
Prior to updating a Multi the vecan-mk2 service should be stopped:
svc -d /service/vecan-mk2
To update run:
vbdup -f 2610408.vff -vvv -s /dev/ttyO1
-vvv is not required and only included to output messages on the console in order to see the tool at work.
Start the vecan-mk2 up again by:
svc -u /service/vecan-mk2
First simply run vup to see connected products, and then follow onscreen instructions. No need to stop the canbus service, you can run an update, and when done, it will automatically recognize the updated product.
root@bpp3:~# vup
Querying devices
| NAD | man | serial | boot | bmode| vup| vup#| id | description | version |
| 0x20 | 358 | 0013122 | 1.02 | - | + | 0 | 100 | BMV to NMEA2000 interface | 1.06 |
| 0x20 | 358 | 0013122 | 1.02 | - | - | 1 | x | x | x |
| 0x24 | 358 | 0013463 HQ1227H7JSJ | 1.00 | - | + | 0 | 108 | BlueSolar Charger MPPT 150/70 | 2.02 |
To update the first device in the above list, use the following command:
vup -n 0x20 -f new_firmware.vup
For other devices, change the address, as found in the first column (NAD).
The name of the firmware file depends on the product.
E.g. skyllai_control_v1.10.vup for updating a Skylla-i Control to version 1.10.
WARNING: for chargers etc this is a bad idea to do remotely if you are not sure what you are doing, since charge voltages etc might be reset as well. It needs a ccgx version >= 1.30. -n is address, the same as for vup, see above (and just type vup to get it).
vreg -n 0x24 -s 4
A bit of a trick: below code first sets them to bootloader mode, and then back out of it:
root@ccgx:~# vup -n 0x24 -u
Querying devices
Found device, enabling UDF.
UDF is ready to accept update.
Udf enabled, update can begin.
->> NOTE THAT IT CAN ALSO HAPPEN THAT THE -u COMMAND RETURNS AN ERROR. WHICH IS NORMAL. YOU
CAN VERIFY IF IT WAS SUCCESSFULL BY RUNNING JUST vup. IT WILL SHOW ALL DEVICES AND INDICATE
IF THEY ARE IN BOOTLOADER MODE (-u WAS SUCCESSFULL) OR NOT
root@ccgx:~# vup -n 0x24 -e
Querying devices
Update end send
# vreg --help
vreg - Victron registers
-b,--bin
Output in binary format.
-g,--get
Get a register.
-n,--nad
The NAD of the target device.
-r,--run
Keep running.
-s,--set
Set a register. Data is set with e.g. un16:2800 un16:12
COMMON OPTIONS:
-c, --canbus
Specifies the CAN-bus interface to use, formatted as [driver]:[channel].
kvaser:1 will for example select the first Kvaser channel.
-c ? will list the available gateways.
-d, --dump
Dump the contents of the CAN bus frames. Specifying multiple times increases verbosity.
-h, --help
Print this help.
--log-before <count>
When set to non zero <count> number of log lines, which are
not enabled themselves, are nevertheless shown before an
log which is enabled. For example an error message will be
preceeded by <count> warning and info messages which occured
before the error. Combined with -v also warning messages will
be preceeded by info messages
--log-after <count>
Like -log-before, but temporarily enables tracing of disabled messages
after a warning or error occured.
--silent
Only listen, no messages or acks are sent
-v --verbose
Enable log messages. Specifying multiple times increases verbosity.
Victron Energy B.V.
Switching all devices on VE.Can off (careful, when having NMEA2000-out enabled, or having an Inverter RS, also AC will be switched off!):
vreg -c socketcan:can0 -s 0x0200 un32:0x000004
switching a specific device off:
vreg -c socketcan:can0 -s 0x0200 un32:0x000004 -n 0x24
Note that in above example the VREG data field (un32) is padded with zeros; current firmware requires that, future fw won't any more.
Switch a specific device on:
vreg -c socketcan:can0 -s 0x0200 un32:0x000001 -n 0x24
Seeing which devices are off and which are on goes like this. Press ctrl-C to stop the command.
vreg -c socketcan:can0 -g 0x200 -r
Start dbus-spy and open de vecan (com.victronenergy.vecan.canx
) service and find the device of interest.
Devices/400002002CC4CD21/CustomName Lynx Smart BMS HQ2305MVWJY
Devices/400002002CC4CD21/DeviceInstance 2
Devices/400002002CC4CD21/FirmwareVersion 1.11
Devices/400002002CC4CD21/Manufacturer 358
Devices/400002002CC4CD21/ModelName Lynx Smart BMS 500
Devices/400002002CC4CD21/N2kUniqueNumber 314657
Devices/400002002CC4CD21/Nad 41
Devices/400002002CC4CD21/Serial HQ2305MVWJY
Then browse to the Nad
item and press [Enter], followed by the new value and [Enter] again.
# svstat /service/* | grep vedirect
/service/vedirect-interface.ttyO2: up (pid 2020) 1210220 seconds, normally down
/service/vedirect-interface.ttyO4: up (pid 2105) 1210218 seconds, normally down
First stop the driver:
/opt/victronenergy/serial-starter/stop-tty.sh /dev/ttyUSB0
Then update the product:
root@bpp3:~# dup -s /dev/ttyO2 -f filename.dup
VE.Direct Updater
Updating device on /dev/ttyO2
Locating device
Found BlueSolar Charger MPPT 75/15 (A042)
Retrieving calibration data
Found application v1.14
Entering bootmode
Found bootloader v1.01
Erasing device
Programming
Starting new firmware
Verifying new version
Found bootloader v1.01
Update successful
Restoring calibration data
root@bpp3:~#
and when done, release the tty back to the serial-starter:
/opt/victronenergy/serial-starter/start-tty.sh /dev/ttyUSB0
See here: https://github.com/victronenergy/venus/wiki/dbus-api.
That API allows to read and write VREGs. See MPPT, BMV and other HEX Protocol documents on our white paper section on the website for more information. Once you understood it all; its possible to reset a BMV too 100% with a one liner from the command line, ie "dbus -y com.victronenergy.battery.ttyO1 [find the right path] SetVreg [VREG] [DATA].
The API will be used for a feature thats in progress: remotely changing settings of MPPTs, BMVs and other products connected to a GX device on the internet.
To make a screenshot press and hold the upbutton, and then press the down button. You'll then find /opt/victronenergy/gui/snapshot.png
If you have a CCGX already installed, but Remote Console on VRM is not enabled, follow these steps to enable it remotely:
- SSH into CCGX (make a root password by following instructions here)
- Enable Remote Console on VRM:
dbus -y com.victronenergy.settings /Settings/System/VncInternet SetValue 1
- Enable Remote Console on LAN:
dbus -y com.victronenergy.settings /Settings/System/VncLocal SetValue 1
- Create the password file. Empty file means no password:
touch /data/conf/vncpassword.txt
- Reboot CCGX via SSH:
reboot
- Now you should be able to access Remote Console feature from VRM
- If you want to set a password, go to Settings -> Remote Console -> Enable password check