Balena devices show nothing

Hello everyone,

I followed the getting start and managed to configure everything.

When I run Balena scan --vorbose, balena can find my device (raspberry 3 B +) correctly.

The problem occurs when, after creating an application:
Balena app create myapp
and configuring the operating system based on the app created:
balena os configure <path/balena.img> --app myapp
balena-cli does not display anything when I run whale devices. As if I had not added any apps in the configuration.

However, I noticed that the app was added to the configuration parameters in boot/config.json

At this point I don’t know what to do anymore. Thanks in advance for the help, I remain available.

Hi @mordred, if I understand correctly you have provisioned an OS to your device and then used the balena os configure command, is that right? Where did you get the balena.img image from?

Hello @wrboyce, exactly! I downloaded the image from link balena os and the version chosen is the development version.

Right, I see what has happened then! When you ran that configure command it actually made changes to the image file you specified, the expectation being that image will be flashed to devices. You need to either:

  • download image from the link you gave, then use Balena CLI to configure, then flash

OR

  • download the image from the “add device” link in the dashboard, and flash that

Either of these options should result in your device appearing in the dashboard. Give one a go and let me know how you get on!

Just thought of a third option, you can use the Balena CLI “join” command to move the device into Balena Cloud under your app. This is probably the path of least resistance as it doesn’t involve reflashing! This should work with the device as you have it now, just do a “balena join $ip” and you should be set.

@wrboyce, first of all, thank you very much for your help.

Using openbalena I don’t have a dashboard to use or I’m doing it wrong?

However as I said earlier I applied the first method you mentioned:

  1. Downloaded openbalena and set everything on openbalena.
  2. Installed the Balena-CLI
  3. Created an application with: Balena app create myapp where I set as a raspberry3 target device
  4. Downloaded the operating system for the raspberry from the link
  5. Configured, with the configure os command, the network and assigned the app as in tutorial “getting start”: balena os configure <path/balena.img> --app myapp
  6. Flash the configured image
  7. Once started the raspberry should, as in the tutorial, appear the line relative to the device that hosts the application by executing the command Balena devices but the table is empty.

ID UUID DEVICE NAME DEVICE TYPE APPLICATION NAME STATUS IS ONLINE SUPERVISOR VERSION OS VERSION DASHBOARD URL

Instead the device should appear as online and the application as active and all other information automatically as from gatting started.

Is there any error in these steps?

Hi @mordred

The steps you describe seem correct. Could you double check if you device can establish a network connection to your openBalena backend?
If device has issues establishing connectivity to the backend, you should see its LED blinking with a specific pattern.
https://www.balena.io/docs/faq/troubleshooting/troubleshooting/#error-notifications

Also note, that if you use Wi-Fi, network name and password have to be configured on the image before flashing too.

P. S. You are correct, openBalena does not include the web UI dashboard.

Hi,

the device is correctly connected to an openBalena backend, or so it seems.
In addition to having the LED flashing continuously 4 times with a pause if I execute the command balena scan --vorbose the device is detected on the network:

Reporting scan results

host: db909a3.local
address: 192.168.42.75
dockerInfo:
Containers: 1
ContainersRunning: 1
ContainersPaused: 0
ContainersStopped: 0
Images: 2
Driver: aufs
SystemTime: 2019-08-30T09:26:17.507851566Z
KernelVersion: 4.19.66
OperatingSystem: balenaOS 2.41.0+rev3
Architecture: armv7l
dockerVersion:
Version: 18.09.8-dev
ApiVersion: 1.39

Hi,
Can you ssh directly into the device using the CLI? From the device you could try to reach the api instance curl ‘https://api.<your-domain>/ping -v. Maybe this gives more information on what is going on. If the device is connected to the backend it should show up with the balena devices command.

Hi @afitzek,
using the CLI I entered via ssh on the device, through the command:
whale ssh db909a3.local --host and when I execute the ping https: //api.apenbalena.local/ping it results: curl: (6) Could not resolve host: api.apenbalena.local, so from here it is guessed that can’t see the server I think.

I set the cnam in my host where I ran openbalena and obviously being an operation done locally on my host the raspberry fails to resolve the domain, correct?

Therefore, how do I act to resolve the problem?

When I mount the image of balenaOS, in the file /root/config.json there are references to the endpoint:

{
“apiEndpoint”: “https: //api.openbalena.local”,
“apiKey”: “EnjZdiFZLvww8UIArlxQt3yR1SsiaOLp”,

“deltaEndpoint”: “https: //delta.openbalena.local”,
“deviceApiKey”: “75ffc19dc64f3b27e3c4b7cc301d73c7”,
“deviceApiKeys”: {
“api.openbalena.local”: “75ffc19dc64f3b27e3c4b7cc301d73c7”
}

do I have to change something in this file to fix resolution problems?

Hi,
Unfortunately the answer is not straight forward. You can only use the openbalena.local domain if you have some local domain resolution in your network. For example by using avahi. The problem is that the device is not able to resolve the api.openbalena.local domain name to an IP address. You would have to provide some network wide dns resolver that can resolve this domain name to the IP of the system that runs open balena.

@afitzek, thanks so much for the help!

So am I obliged to use a local DNS for name resolution in the local network?
Can you tell me how to make balenaOS refer to a specific local DNS?

Happy to help. :slight_smile:

You can use any DNS you like, but it needs to be resolve able by the device. For local DNS in your local network it depends a lot on your network setup, what DNS server do you use, maybe the dhcp server acts as a mdns resolvers as well and resolves the local hostnames. This is really very specific to your setup. You can also use a normal DNS if you have one and have your DNS servers resolve the names to your local IP address.

Hi @afitzek,

excuse the trouble again,

Assuming the case in which I wanted to configure the local dns (dnsmasq) on the same host (my pc). To tell the device to go and execute the resolution request of the api.openbalena.local domain to my host how should I do? Could you tell me a possible solution?

I searched a bit on the internet and found, but I’m not sure, two solutions:

  1. Modify dnsServers entry in the config.json file
  2. Modify resin-wifi:

[Ipv4]
address1 = 192.168.1.127 / 24,192.168.1.1
dns = 8.8.8.8; 8.8.4.4;
dns-search =
method = manual

where instead of google dns I’m going to enter the IP address of my host

I was also wondering if you could use PiHole (use as a docker container on my host) as a DNS server to resolve domain names.

Many thanks in advance.

Could you tell me a possible solution?

The two solutions you found (config.json and resin-wifi) are valid and should work. I would also mention a third option that is to configure your DHCP server to provide the IP address of the desired DNS server at the same time as leasing IP addresses to the devices (assuming you’re using DHCP to configure the devices). Some DHCP servers allow configuration by MAC address or other parameters, so that you can provide different DNS servers to different devices (e.g. laptops vs Raspberry Pis).

I was also wondering if you could use PiHole (use as a docker container on my host) as a DNS server to resolve domain names.

If PiHole provides a standard DNS server, then yes – any standard DNS server should do. If installed in a docker container, remember that port numbers need to be exposed to the host OS.

Thank you all for your help. I managed to solve by configuring dnsmasq on another raspberry and setting the config.json and wifi-resin files, on BalenaOS, with the address of the raspberry (dns service).

I really believe in this project! Thanks again.