Community
cancel
Showing results for 
Search instead for 
Did you mean: 
FTinetti
Honored Contributor I
1,149 Views

Web server - eglibc

Hi,

I'm using the web server I posted some time ago using port 8080 instead of 80 (attached).

The server works as expected when uploaded from Arduino IDE, but it is not working at all when rebooting Intel Galileo (with the same SD card, of course). More specifically, it seems to be that the fixed IP set by the sketch is not working, because the standard HTTP server (replying at port 80) in the same eglibc based image is also not responding when the Galileo is rebooted. I'm using Gaileo, not Galileo Gen2.

Do you know any way of solving beyond using the uclibc based yocto image?

TIA,

Fernando.

14 Replies
idata
Community Manager
82 Views

Hi,

 

 

Is the sketch running after you reboot? There's a guide that works to make the eglibc image have the permanent sketch feature enabled. Look at https://software.intel.com/en-us/get-started-galileo-linux-step1 https://software.intel.com/en-us/get-started-galileo-linux-step1 . I noticed in your code that you're assigning the IP address through the system command. Are you sure the interface is enabled? Before rebooting, when the sketch is working properly use cat /sys/class/net/ enp0s20f6/operstate to check the status of the interface and check its status again after rebooting.

 

 

Sergio

 

FTinetti
Honored Contributor I
82 Views

Hi Sergio,

Is the sketch running after you reboot?

I'm sure the sketch is not working as should be, at least, I don't know if the process sketch.elf is actually running, I didn't check because I expected it to work as in the case it is loaded from the IDE. I'll take a look and post what I find.

There's a guide that works to make the eglibc image have the permanent sketch feature enabled. Look at https://software.intel.com/en-us/get-started-galileo-linux-step1 https://software.intel.com/en-us/get-started-galileo-linux-step1 .

Interesting/funny... the yocto image is expected to be used for sketch persistency... I wonder why that behavior would not enabled by default... or I'm missing something... anyhow, I created the SD card following those steps (those are the only ones I know) for Windows (https://software.intel.com/en-us/get-started-galileo-windows-step1 IoT - Step 1: Make a bootable micro SD card | Intel® Software ), since I'm developing under Windows. There is nothing specific in those guides "to make the eglibc image have the permanent sketch feature enabled"... Looking for "sketch" and "persist" in that page, the only paragraph containing those words is

In addition, sketches that you upload to the Intel® Galileo board are erased when the board is powered down. To be able to resume the sketch even after powering down your board, you must boot from a micro SD card.

so I think there is nothing to do... or again I'm missing something...

I noticed in your code that you're assigning the IP address through the system command. Are you sure the interface is enabled? Before rebooting, when the sketch is working properly use cat /sys/class/net/ enp0s20f6/operstate to check the status of the interface and check its status again after rebooting.

Again this is unexpected... The interface is enabled and working as expected when I load the sketch as well as the complete system is working as expected, actually, I wonder why the interface would be disabled after reboot... nothing is programmed to do so... Anyhow (again) I'll check pre- and post- booting (after loading the sketch, of course).

Thank you again,

Fernando.

FTinetti
Honored Contributor I
82 Views

Hi again,

I attach the sequence of screenshots where it can be seen that the sketch is not loaded after power off - power on.

Fernando.

idata
Community Manager
82 Views

Thank you for attaching the document. Yes, it seems like the Galileo loses the IP each time it reboots. It seems as if it's getting a DHCP address and ignoring the sketch system command. Can you try to set the IP address of the sketch as a static IP?

 

 

To configure the static IP, first use connmanctl to enter connmanctl mode. Now, find out the name assigned to your ethernet cable with services and copy the output received.

 

Now, assign the static IP with

 

config --ipv4 manual .

 

 

When assigning an IP address, make sure to use an address that doesn't conflict with the addresses leased by the DHCP server.

 

 

Let us know your results.

 

 

Sergio

 

FTinetti
Honored Contributor I
82 Views

Hi Sergio,

Yes, it seems like the Galileo loses the IP each time it reboots. It seems as if it's getting a DHCP address and ignoring the sketch system command.

I think the worst problem is that the sketch is not running at all... I'll try your suggestion and report back.

Fernando.

FTinetti
Honored Contributor I
82 Views

Hi,

This is becoming disappointing... the sketch now works but I don't know why!

It seems to be that the whole system is unstable... I'm pretty sure the problem will suddenly reappear as it has "disappeared"...

I attach the sequence as well as some further experiments.

Fernando.

idata
Community Manager
82 Views

Thank you for providing the steps you've followed. The first scenario you describe is indeed unusual. Just typing connmanctl without any arguments or any additional commands in the connmactl prompt shouldn't change anything.

 

 

As for the reset/reboot differences, it looks like clloader isn't recognizing the reset because the board fails to load the sketck.elf. In the reboot, on the other hand works properly. I looked in the /opt/cln/galileo/launcher.sh file to see if there was some information. Take a look at the galileo-target.service and see if it behaves differently using reset and reboot.

 

 

Sergio

 

FTinetti
Honored Contributor I
82 Views

Intel Corporation wrote:

Thank you for providing the steps you've followed. The first scenario you describe is indeed unusual. Just typing connmanctl without any arguments or any additional commands in the connmactl prompt shouldn't change anything.

 

 

As for the reset/reboot differences, it looks like clloader isn't recognizing the reset because the board fails to load the sketck.elf. In the reboot, on the other hand works properly. I looked in the /opt/cln/galileo/launcher.sh file to see if there was some information. Take a look at the galileo-target.service and see if it behaves differently using reset and reboot.

Did you find any thing at the /opt/cln/galileo/launcher.sh file that may be useful here?

What do I have to look at the the galileo-target.service and how?

TIA,

Fernando.

idata
Community Manager
82 Views

We'll run some tests and post our results soon.

 

 

Sergio

 

FTinetti
Honored Contributor I
82 Views

Thank you very much

Fernando.

idata
Community Manager
82 Views

Hi Fernando,

 

 

Thank you for your patience. The issue has been resolved in 3.5 release, it has been validated and is working. Try using the latest release found in https://software.intel.com/en-us/iot/hardware/galileo/downloads https://software.intel.com/en-us/iot/hardware/galileo/downloads (iot-devkit-prof-dev-image-edison-20160606).

 

 

-Sergio

 

FTinetti
Honored Contributor I
82 Views

Thank you very much, I'll try to experiment as soon as possible.

Hmmm...

is iot-devkit-prof-dev-image-edison-20160606 useful for Galileo (edison is in the name...)?

Fernando.

idata
Community Manager
82 Views

I apologize, the correct name is iot-devkit-prof-dev-image-galileo-20160606 and can be downloaded directly from https://software.intel.com/galileo-image/latest https://software.intel.com/galileo-image/latest .

 

 

-Sergio

 

FTinetti
Honored Contributor I
82 Views

Intel Corporation wrote:

I apologize, the correct name is iot-devkit-prof-dev-image-galileo-20160606 and can be downloaded directly from https://software.intel.com/galileo-image/latest https://software.intel.com/galileo-image/latest .

 

 

-Sergio

Yes, I downloaded the file

iot-devkit-prof-dev-image-galileo-20160606.zip

and the image itself is

iot-devkit-prof-dev-image-galileo-20160606.direct

The rest of the procedure is as described in the corresponding web page.

And it works, at least for this simple example. Thanks for fixing the bug.

Fernando.

Reply