I’ve found these numeric error codes in
os-config source code (errors.rs):
ErrorKind::ReadOSConfigSchema => 3,
ErrorKind::FetchConfiguration => 4,
ErrorKind::StartService(_) => 5,
ErrorKind::StopService(_) => 6,
ErrorKind::ReloadRestartService(_) => 7,
ErrorKind::WriteFile(_) => 8,
ErrorKind::ServiceNotFoundJSON(_) => 9,
ErrorKind::ConfigNotFoundJSON(_, _) => 10,
ErrorKind::MergeConfigJSON => 11,
os-config join(....) failed with error: 4 would be
FetchConfiguration error, which we assume is an error when the device tries to contact some of the openBalena endpoints:
I am not clear that it is necessarily a DNS error. I suggest decoding the base64 string provided in the error message (see example in balena-cli issue 1151) to extract the actual endpoint URLs, then test whether they are reachable on the device host OS terminal – perhaps using tools like
Is there a way to make my device resolve the DNS ?
If it is indeed a DNS resolution issue, then instead of modifying the device’s host OS, it may be preferable (if possible) to use an external DNS server and edit the device’s
config.json dnsServers setting to point to that DNS server: this comment from another forum thread covers some of them, the easiest probably being using a domain registrar’s web interface to modify CNAME or A records. For example, if you bought
kameshs.com from GoDaddy (no affiliation!), you could follow this guide.
Also note that balena-cli issue 1319 reports that
balena join does not run on production balenaOS images ((see dev vs prod images), and offers a workaround which is to open a ssh terminal to the device’s host OS then directly execute the
os-config leave/join command. When manually running the
os-config command on the device terminal, watch out for JSON escaping – see this comment on issue 1151.