This documentation page is for detailed information about the services and pages in the BlueOS web interface. For a higher level list and direct comparison of features see the Overview instead.
The default BlueOS interface is simplified, and shows only the major tools that most people are likely to find useful. Full functionality is available via "Pirate Mode", which can be enabled from the header bar. Note that Pirate Mode is advanced/development mode, and should be used with care.
This documentation by default shows the full functionality interface, to provide an overview of all functionality instead of a limited subset, but if you're only interested in the basic functionality you can click the button below:
For clarity of this documentation, any pages that are extended by (or only available in) Pirate Mode are shown in dark mode, and described with grey text.
New in 1.4
Operating a vehicle involves some risks to both the vehicle and the operator. When BlueOS detects that the vehicle is armed it engages safe mode, which requires explicit confirmation to access functionality like BlueOS and autopilot firmware updates.
Based On: blueos-frontend | Port:80
When you first open BlueOS, you'll see a window like the following:
On the left side of the header there is space for widgets, which can be accessed by right clicking and selecting the desired widgets to display. Widgets can be reordered by clicking and dragging.
There are currently widgets available for displaying the CPU and Disk (storage) usage as percentages, as well as local network usage, which are periodically updated during operation:
Widgets are also generated for any enabled network interfaces, which allows monitoring
real time data bandwidth being downloaded/received by the BlueOS computer and
uploaded/transmitted from it (New in 1.4):
There is also a prominent indicator when the vehicle is in Safe Mode:
On the right side of the header you'll find:
Based On: Cable Guy | Port:9090
An ethernet connection can generally be accessed through the http://blueos-ethernet.local mDNS address.
When configuring a wired interface, choose between:
(New in 1.4)(New in 1.4)
It is possible to have multiple connections per interface type.
Based On: Wifi Manager | Port:9000
BlueOS (******) by default, where the asterisk
field varies for each system
blueosap
wlan0 should be at the top (for internet via wifi)eth0 to the top if using internet passthrough via the tether
(New in 1.4)
The burger menu at the top left of the header opens up the sidebar, for conveniently accessing available pages, tools, and services. When the page is wide enough, the sidebar automatically stays open.
(New in 1.2)
Submit feedback about BlueOS via:
The "Dashboard" page provides an overview of the available pages. In future it will provide an overview of the vehicle state and main configuration options. Click the BlueOS logo to return to the dashboard at any point.
Pages are sorted alphabetically.
Based On: ArduPilot Manager | Port:8000
The Autopilot Firmware page provides basic information about the active autopilot, along with options to:
Stable-4.1.1
Systems with a Navigator flight controller also have the option to configure serial-compatible ports from the onboard computer (including USB ports) as serial ports accessible to the autopilot.
💡 It's highly recommended to flash the default parameters for the vehicle when a firmware downgrade or upgrade is done. Check the vehicle setup for more information.
If you want to do some testing without needing physical hardware, BlueOS includes a virtual flight controller "board" for running ArduPilot SITL simulation builds. It comes pre-configured to run the latest stable ArduSub firmware, but can be re-flashed with other ArduPilot firmware versions or variants like a normal flight controller board.
The default setup is for a 6-thruster vectored ROV (like the BlueROV2), and is "located" in a lake in Brazil, where the BlueOS core development team is based. The vehicle will show up on the map in control station software, and can be controlled with a joystick, but the simulation is only for telemetry - there's no video output! If you'd like to try driving around a simulated full ROV in a swimming pool (fish included!) you can instead run our hosted version of BlueSim, and open Cockpit from the sidebar.
If you want to simulate a different vehicle frame in SITL (especially if you have just flashed on a different firmware variant) you
can click or copy this link1, then click
"Try it out" in the POST: /sitl_frame endpoint, select the frame you want in the dropdown, and "Execute".
As an example, to simulate a BlueBoat you would first flash the SITL board to ArduRover, change the frame to "motorboat" (as described above), then load Blue Robotics' default parameters for the vehicle from the Vehicle Setup "Configure" page.
If the provided link doesn't work, you can instead click the /v2.0/docs
link in the "version" column at the far right of the "Autopilot Manager" row in the Available Services page.
ArduPilot firmware supports using Lua Scripts to add
custom functionality and drivers without needing to modify or build the firwmare itself. Once enabled
(via the SCR_ENABLE parameter)
they can be conveniently managed through the lua_scripts folder in the File Browser.
Currently this functionality is only available to vehicles with a Linux-based flight controller board (like a Navigator), but general support for serial-connected autopilots is on the way!
New in 1.1
The Autopilot Parameters page allows checking and changing the autopilot's configuration.
metatdata_override.json file
in the userdata folder in the File Browser (New in 1.4)
The Available Services page provides developer access to the underlying http server interfaces of the services upon which BlueOS is based. Each service is listed with
and where relevant
The individual services are documented in the development documentation.
Based On: Bag of Holding | Port:9101
The Bag Editor is a helper service for advanced users, which allows modifying the database used to handle frontend interface changes.
Based On: Version Chooser | Port:8081
The Version Chooser is a major component in the robust backbone of BlueOS. It runs independently from the main interface, and is monitored such that if it somehow fails a backup version will be run in its place.
.docker/config.json, by default for the normal pi user (and optionally the root user)sudo docker commands
Based On: File Browser | Port:7777
The File Browser allows viewing, editing, downloading, and uploading BlueOS files.
Vehicles using a Navigator flight controller board with a recent ArduPilot firmware can access Lua
drivers and scripts at configs/ardupilot/firmware/scripts. (New in 1.2)
Based On: UAV LogViewer
.bin logs from Linux-based autopilots
BRD_RTC_TYPES autopilot parameter to include MAVLINK_SYSTEM_TIME
so the filenames use timestampsLOG_BACKEND_TYPE autopilot parameter is set to MAVLink
Based On: ArduPilot Manager | Port:8000
The MAVLink Endpoints manager allows configuring the serial, UDP, and TCP endpoints for MAVLink-based services and programs to access.
(New in 1.2)
(New in 1.4)
127.0.0.10.0.0.0192.168.2.2 may also work192.168.2.1 for connecting to a UDP server on the Control Station Computer
Based On: MAVLink2Rest | Port:6040
The MAVLink Inspector provides real-time access to the MAVLink messages being sent to the topside computer. It is possible to
Future improvements will include plotting and comparisons, along with more powerful filtering options.
For tracking the latest value of a single message type, use the "watcher"
functionality of the MAVLink2REST service (access via the
Available Services page).
Based On: Pardal | Port:9120
The Local Network Test measures real-time latency between BlueOS and the surface computer, and allows checking the upload and download speeds between them.
A plot is provided of each test, to help diagnose intermittent issues.
The Internet Speed Test allows measuring the latency and upload and download speeds between BlueOS and its internet connection (if one is available).
Based On: NMEA Injector | Port:2748
Based On: Ping Service | Port:9110
New in 1.1
The Ping Sonar Devices page shows any detected sonars from the Ping family, including ethernet-configured Ping360s that are visible on the local network (e.g. via an Ethernet Switch).
DISTANCE_SENSOR
messages to the autopilot, for viewing in the Control Station Software and
logging as part of the telemetry stream
Based On: Bridget | Port:27353
The Serial Bridges page allows creating high performance links between serial devices that are connected to the onboard computer, to a UDP port.
Replaces the Routing functionality from the old Companion Software.
For making connections to the autopilot, see MAVLink Endpoints.
0.0.0.0, which creates a UDP server that waits
for a UDP client on the control computer to connect to it
127.0.0.1, which creates a
local server
Based On: System Information | Port:6030
The System Information page provides useful information about the processes, network configuration, and computer system BlueOS is running on. It can be useful for troubleshooting, and finding if a particular program is using excessive resources.
Update buttons are provided if the device is not running the latest stable versions of the Raspberry Pi firmware or USB controller.
Based On: ttyd | Port:8088
The Terminal provides
CTRL+b ") and vertically (CTRL+b %), and use cursor
to resize the panelsCTRL+b s)
CTRL+c) services, and start them again (↑ ⏎)red-pill utility
exit command, or pressing CTRL+ddocker image listdocker ps -a-u argument (e.g. red-pill -u myusername) (New in 1.2)
New in 1.1
The Vehicle Setup page provides an overview of the vehicle, including its sensors and peripherals. The 3D model can be rotated, and can be panned by clicking and dragging while holding SHIFT. The camera icon can be used to capture a screenshot of the current view of the model, with a transparent background.
It is possible to override the displayed 3D model by providing an appropriate glTF file.
In future this page will also allow
The PWM Outputs tab allows configuring the servo function mappings (for motors, lights, camera tilt, etc), as well as manually testing the motors, and an automated check to detect motors that spin backwards. Relevant motors can be set to run on reversed control signals, so they spin in the expected direction.
Hovering over a motor or output function will attempt to highlight the related component in the 3D model.
Clicking on an output in the right side table allows changing its assigned function,
and configuring its PWM limits and trim value (New in 1.4):
New in 1.3
The Configure tab provides configuration and calibration options for the vehicle sensors and peripherals, including failsafes, and reverting parameters to their defaults.
💡 Pages with configurable options usually include info icons above the interface components, which can be hovered over for extra information about the underlying autopilot parameters.
New in 1.4
Based On: MAVLink Camera Manager | Port:6020
(New in 1.4)5600
5601udp://<surface-IP>:<port>
udp://192.168.2.1:5602+
symbol during stream configuration
(New in 1.4)
(New in 1.1)(New in 1.1)
New in 1.1
Based On: Kraken | Port:9134
The Extensions Manager is in charge of fetching, installing, updating, and managing Extensions.
The Store tab shows the available extensions, with a default filter which excludes the development example extensions. Beta versions show a red marker on the card corner.
Clicking an extension card displays the developer information, default application settings and permissions, a description / basic usage instructions, and a dropdown to select which version of the extension to install (or uninstall):
By default, the store searches the BlueOS Extensions Repository for available extensions, but it is also possible to specify your own external collections of extensions:
The Installed tab shows the resource usage of the installed extensions, and allows configuring them, checking their logs, and restarting or disabling them:
The blue "+" button in the bottom right corner allows installing custom extensions as relevant.
The "Edit" button on installed extension listings allows changing to alternative/development versions by setting the docker tag.
The vehicle identifier components in the sidebar can be modified to suit your vehicle or use-case - just click to edit:
avahi-discover on the terminal to see if the avahi service is running
The 3D model used in the Vehicle Setup pages can be replaced with a custom glTF file:
There are a variety of ways to create such a file, but our standard process is to:
CTRL+JCTRL+L can help to select connected facesmotor1.glb) file, so it can be read by the BlueOS model viewer
Mesh / Apply Modifiers and Compression should both be enabled in the export configurationuserdata/modeloverrides/<vehicle-type>/<vehicle-frame>.glb<vehicle-type> would be sub, and <vehicle-frame> would be VECTORED_6DOF/userdata/modeloverrides/ALL.glb{
"annotations": {
"Motor1": {
"surface": "3 1 2510 2509 2511 0.356 0.124 0.521",
"text": "Motor 1"
},
"Motor2": {
"surface": "2 1 2642 2643 2674 0.638 0.230 0.133",
"text": "Motor 2"
},
}
}
SERVOn_FUNCTION parameter value namesVECTORED_6DOF.jsonIt is possible to customise the styling of the BlueOS interface by adding a
theme_style.css file at userdata/styles/ in the File Browser.
The File Browser can also be used to modify the file, in which case the styles
are updated at the next page refresh after the file is saved. The save button is
in the top right corner.
CSS is commonly used for styling HTML webpages, and has an extensive set of features available. For the purposes of adjusting the BlueOS theme, the most important thing to understand is how to specify colors. It can be helpful to use tools like colorhexa when choosing a palette of colors, including for checking accessibility for various color vision deficiencies.
For reference, here is an example with most of the main BlueOS colors changed, together with the theme file that created it:
:root {
--v-primary-base: #CAB1E5 !important; /* sidebar highlights, submit buttons */
--v-info-base: #BA55E5 !important; /* info boxes (often same as primary base) */
--v-warning-base: #EDD1E5 !important; /* warnings and skip buttons */
--v-error-base: #AC1D1C !important; /* notifications, pirate icons, negative buttons */
--v-anchor-base: #5A11ED !important; /* hyperlinks */
}
/* light theme background, light to dark */
div.light-background {
background-color: #BAFF1E !important;
background-image: linear-gradient(160deg, #BAFF1E 0%, #5CA1E5 100%) !important;
}
/* dark theme background, light to dark */
div.dark-background {
background-color: #5EABED !important;
background-image: linear-gradient(160deg, #5EABED 0%, #BA55E5 100%) !important;
}
/* light theme header bar background, light to dark, translucent */
header.light-background-glass {
background-color: #DEADBA55 !important; /* fallback if gradient not available */
background-image: linear-gradient(160deg, #DEADBA88 0%, #5111CA88 100%) !important;
backdrop-filter: blur(4.5px) !important;
-webkit-backdrop-filter: blur(10px) !important;
}
/* dark theme header bar background, light to dark, translucent */
header.dark-background-glass {
background-color: #5111CA55 !important; /* fallback if gradient not available */
background-image: linear-gradient(160deg, #5111CA88 0%, #0B5E5588 100%) !important;
backdrop-filter: blur(4.5px) !important;
-webkit-backdrop-filter: blur(10px) !important;
}
The explanatory diagram colours are also configurable (New in 1.4):
:root {
--v-water-base: #AC2317 !important;
--v-negative-base: #891A10 !important;
--v-attention-base: #ECC19B !important;
--v-positive-base: #514A3B !important;
--v-neutral-base: #A15447 !important;
--v-detail-base: #370502 !important;
--v-outline-base: #FDF4C9 !important;
}