I am a member of the 'Dimension Parabole' team who seek to repair a 10m dish parabola in Paris,France. We have been using succesfully the INDI library for a couple of years, and it is a central brick of our work. Until now, we are using a Raspberry Pi, but recently, we have discovered a number of status outputs of the initial hardware that could be usefull to show to the remote operator.
To avoid the use of caps on the Raspberry Pi, I am thinking to use a Beaglebone Black. This hardware has much more I/O lines, but it has much less room in the flash memory (about 3.5Gb).
Until now, we are used to compile the whole library, with all the drivers, but doing this on the BeagleBone Black leads to a lack of memory in the mmcblk0p1 device. So I am thinking to several workaround of this problem :
1) use of a lighter OS. We are using a debian buster version for the BeagleBone Black. As this is the latest OS for this hardware, Not sure this will be a good idea...
2) Compile only the requested drivers. We wrote our specific 'mount' driver, so we do not need to compile the drivers for the LX200 (for example), nor any CCD driver (again for example !). So I guess that 90% of the drivers compiled are useless for us.
3) Expand the BeagleBone Black memory. Some of the IOs of the BeagleBone Black can be used as an eMMC port. I have no idea how we could increase the memory size by this mean.
So anyone having an experience with the BeagleBone Black could give us ideas on how we could workaround this problem.
Hm. That seems to be a very low power machine. Things you might want to try:
- enable zram for swap. it'll be faster than swapping to sdard/emmc
- do all the compiling on the sdcard. It won't be fast, but at least it's got lots of storage
- compile only the necessary drivers
- cross-compile on a much faster amd64 machine
At the moment, I'm compiling indi and kstars on a Radxa Zero, with all the source on a microsd...
Thanks for your answer, I am not sure of what I should do to some of your tips. So, let's start with this one :
- Compile only the necessary drivers.
INDI library has many drivers that we do not need as we are using only our cutom 'Mount' driver. So how could I do this ? By removing lines in some of the CMakeList.txt ?
I have no experience in the cmake system ...
Another one that could be easy : Do all the compiling on the SD card.
I think that I could mount a blank SD card in the file system (for example in Project directory) so the INDI library could be in the SD card. But in that case will the install process still be in the same directory.
Sory for these very basic questions, but I am no guru in INDI nor in Beaglebone ...
Goodness no, do not edit cmakelists unless you're a developer or you can explain why you need to do it and can demonstrate that there is a no better way.
There is, in fact, a better way. You can read through cmakelists to figure out which flags to use to enable/disable certain features, or use ccmake (sometimes called cmake-curses-gui) to interactively select them... I'm lazy and prefer the latter.
You can easily mount an sdcard somewhere, check out the source and compile it, then install to a completely different path. That is one of many things you can configure with cmake (or ccmake). On my Radxa I mounted the sdcard on /mnt/sdcard, put the source in /mnt/sdcard/src/indi, deactivated some drivers I didn't need, compiled in /mnt/sdcard/build-indi, and installed to /usr/local.
I have a solution for build only the libindi libraries. The only problem with cmake, is you cannot specify others file that cmakelist.txt. So, you must modify the cmakefile.txt. while do that, you'll have a problem for do a git pull for the update. I suggest to do follow instruction :
1) copy your indi directory to an other (ex : indi2). With that, you save your indi directory and you'll could do the update has when you want.
2) in this indi2 directory, modifiy the CMakeLists.txt like that :
in the build section (~line 83), add an option :