I ask because I have spent a week trying to figure out why gphoto2 won't compile into yocto. I've researched and read many of the various doc's scattered around Intel and Yocto and OpenEmbedded. I've been on the IRC chat in # ycoto. I've spent a lot of time with 0 results and a whole lot of frustration. Even if you don't want to use any other packages or add anything else but bitbake image-full, once you get the OS running, doing anything as simple as setting up wifi is a huge pain. I've followed all the doc's and nothing is where it should be or working the way it should. Why is intel supporting this horrible OS? I understand it's nice to have the 'packages' built locally for this. But really, to do anything custom is almost impossible. You have to dig into other peoples code and create patches. You have to understand compilation errors. You have to understand the unhelpful yocto build fail messages. You have to read endlessly to understand how to write your own recipe (which is extremely difficult). All of this to add a simple package. gphoto2. Why not use and support a highly supported commonly used OS. I'm going to use ubuntu for this example, just because they have so much support. It may not be the absolute best option for whatever reasons you can come up with, but here is what it provides. Usable package management. If intel set up and supported a build box for common packages, it would be easy for them to support it. All of the packages have already been written, they just need to be built for i586 (lots of them are for i686 and this causes lots of issues).
You don't have to use the standard Yocto image you can use the IoT XDK Yocto image and the Intel Development tools https://software.intel.com/en-us/html5/xdk-iot Intel® XDK IoT Edition | Intel® Developer Zone. There are at least two ports of Debian (Anderson http://sourceforge.net/p/galileodebian/wiki/Home/ galileo-debian / Wiki / Home and EmuTex http://www.emutexlabs.com/ubilinux EmutexLabs) and a port of Gentoo . You can also run windows 8 on it with windows development tools. https://dev.windows.com/en-us/featured/windows-developer-program-for-iot Windows Developer Program for IoT
I found using AlexT's version of Yocto which includes the development toolkit http://alextgalileo.altervista.org/blog/updated-galileo-devtools-image/ Updated Galileo "devtools" image is out works fine for my purposes.
Thanks for the links. I just wish intel would support one of them (debian or gentoo). Both look to be having some issues. Debian based ones are running into the i586/i686 issues and the gentoo one is running into kernel issues.
I can understand your frustration, and went through my own period of frustration with Galileo and Yocto, but over time have figured out most of its quarks and find it to be suitable for what I am trying to do.
I don't have any connection with Intel, except as a user of their products, but would guess that the small memory footprint and the way the BusyBox system makes it easy to build special purpose systems, like including Arduino emulation that nobody else has done, is why they picked Yocto. For my purposes, having a way for students to create projects in Python that are more advanced than they did with Arduino boards, and allowing me to make use of the large number of Arduino shields and sensors we have purchased, Yocto on the Galileo meets my needs. I looked at a number of different distributions on the Galileo (as well as some other boards running different OSs), tried to create different projects that students could do, and ran into problems, so went back to AlexT's version. I found ti to be quite speedy,adaptable and, when combined with the EmuTex wiring_x86 system, allows for use of almost all of the sensors and actuators we have or are purchasing. If all you want to do is add gphoto2 to the distribution, I would suggest you look at AlextT.s version of Yocto. It has development tools that have allowed me to add just about anything I need. Alex has also been very supportive at including other packages and can probably help you port gphoto2. AlexT_Intel If it doesn't meet your needs, I can well understand, as one size doesn't fit all, which is why there are makers. :-)
We are also using a Intel Galileo Gen2 board in one of our prototypes. Because we think Yocto is way bloated for what we need and/or making actual lean-and-mean fimware images we compiled our own cross toolchain using crosstool-ng. After that we built your own kernel and Buildroot based rootfs with it and this works quite nicely. If you are interested, send me an email; I can point you to some more information.
If your comment isn't a scam, which it looks to be, you can open a discussion, provide the links and attach files. However, since your profiles says you first became a member the same day as your posting and the webpage of ZUPR https://www.zupr.nl/ ZUPR - intro looks like it was thrown together at the last minute, has no real information and lists no products, it looks very suspicious, to say the least.
Too bad you did not put any effort in finding out who I am ; unfortunately your name "rgb" is not of much use to do such thing from my side.
You think I am telling you bullshit and/or posting some scam? Think our website is put together in the last minute? You may be right! Just like any normal business it takes time to develop something.
Actual hardware != website though.
You want more information? You'll get it. I will create a new topic about how to build your own Galileo software using other software than Yocto. Stay tuned.
Oh and btw: yeah, post 1, but I just have to start somewhere right....
A complete description with links to software would be a much more professional response that the original posting or your response If you are legitimate, than you have my apology and I look forward to seeing something concrete.
Still dealing with this atrocious OS and this ALMOST real CPU. Yocto sucks, and most of the debian packages are actually i686 even though they say i386. This board is driving me nuts. If i wasn't forced to support it, I'd be using a raspberry pi.
Do you have a specific problem or are you just venting?
I just finished a class where 8 teams of students made quite innovative products with the Galileo, so it can do a lot, including most things the Raspberry Pi can do (Just not video -For my examples I ported a lot of Raspberry Pi code) and some the Raspberry would have difficulty with. As always, one needs to pick the right tool for the job.
Just out of curiosity, why do you "have" to use the Galileo.
To answer you last question about why I have to use the Galileo: Intel is sponsoring the project that I'm working on. Not sure how much more I can get into about it since my frustrations reflect my own opinion and not that of the company that is being sponsored.
1) adding anything besides what is available is a huge pain. example: libgphoto2 and gphoto2. You have to be extremely good with c/c++ and make files and troubleshoot the issues converting from make to bitbake.
2) I have not found a way to get kernel headers on the system
3) I have a kernel module that needs the source for the headers modified... good luck figuring out where that is.
4) How the heck do you enable the watchdog timer? I have searched the forums, and the only thing on here does not work. The guide shows a usage guide, but not a way to enable it.
5) You have to spend hours researching to figure out how to do ANYTHING with yocto, and even then it doesn't work (for examples see above).
So while my last post was more venting than anything.. I do have examples to back up my frustrations.
Intel_PeterCMata_IntelAlexT_Intel (Hi Peter, CMata & Alex - sorry to bother you but maybe you can help cgkades)
I can well understand your frustration. I had a lot of problems when I first started with the Galileo. I also like the Raspberry and use it with some students (who are learning programming) and the Galileo with others (who are more focused on hardware) I would suggest when you run into problems like you mentioned, and can't find the answer on-ling, start another discussion, as not likely some of the really knowledgeable people will read this, and click on mention and try to get some of the people who work with the issues you are having like Intel_Peter, AlexT, CMata and others
I mostly dabble around in Python, so haven't had a lot of problems lately. The specific applications I needed for my classes were added to the Yocto distribution by AlexT, so most of the problems that caused me major headaches a year or so ago have been solved..
Finally, you don't have to use Yocto. There are a number of different distributions and I played with a number of them until settling on Yocto, but your case is different than mine, so may not be the best for you. Hopefully the experts I mentioned at the start can help you
Sorry can't be of more help
Let me start with easy ones:
2) To get kernel headers you just install kernel-dev package from my repo (if you use my image based on 1.0.4 or the 1.0.4 itself). Not sure about the DevKit image, which recently became officially (and only) supported, but they have a package repo too, just try opkg update && opkg install kernel-dev.
3) After they're installed, ernel headers are in /usr/include, just like any other Linux
And other ones are:
1) What exactly is a problem when compiling libgphoto and gphoto2? Which image you're compiling this on? DevKit image should theoretically be more friendly for this piece, but I'd expect my devtools image to be able to compile it as well. Please post details (compilation logs, errors), better in a separate dedicated thread, and we'll go from there. You don't have to use Yocto to build those, you can just compile it from sources like on any Linux computer, the whole toolchain is available.
4) There're not enough details in your question for me to answer specifically, but if you're talking about standard Linux watchdog framework, then it's just the standard Linux way - enable it in the kernel config (how to do that? see Quark BSP build guide, or just search the forum - there were several threads on this. Or just ask if you didn't find that. This is Linux, not Yocto). There's a thread that actually has all the info and I even see you;ve found it ( ). There "enable" means Linux kernel config. Just see the BSP build guide, it has all this information.
Thanks for your response, I'll try to answer what I can.
RE:libgphoto2 and gphoto2 (as an example)
I've since given up trying to get libgphoto and gphoto into Yocto. I got errors after errors and received very little support from the Yocto IRC channel. They were saying something about the make file or something not being written more genericly... but that's honestly beyond me, I understand programming and some C/C++ stuff, but not at that high level. And part of the great frustration with Yocto is that you have to be an experienced developer in order to include anything in it. If you look at the current libgphoto2 that is included in one of the yocto places (It's been months and i've forgotten what things are called and where they are). But anyways, if you look at it, it has a few patch files to make things work right.. and looking at it, there is NO way I have the time to figure it out to make something similar work for gphoto2, but it will give you an idea of the level of effort and knowledge needed.
RE: Kernel headers
1) What BSP are you working off of? (link?) I'm using meta-clanton_v1.1.0-dirty from Board_Support_Package_Sources_for_Intel_Quark_v188.8.131.52z. I have, again, no idea how i found this since all of the documentation and files are VERY hidden. And here is proof:
Starting at the Galileo Download and documentation page: https://www-ssl.intel.com/content/www/us/en/do-it-yourself/downloads-and-documentation.html Downloads and Documentation: Getting the Most out of your Board
You follow the link for the Galileo Software which I know has outdated software and docs, not to mention no explanation of what anything is. EX: SD-Card-Image. What is that, do we use that? no idea.... moving along we have a link to a text file http://downloadmirror.intel.com/24355/eng/BSP-Patches-and-Build_Instructions.1.0.4.txt BSP Patches and Build Instructions which inside has a link to an outdated doc from 2014 (http://downloadmirror.intel.com/23962/eng/Quark_BSP_BuildandSWUserGuide_329687_007.pdf http://downloadmirror.intel.com/23962/eng/Quark_BSP_BuildandSWUserGuide_329687_007.pdf).
So that was a dead end. Lets try the Documentation link which takes you to here https://www-ssl.intel.com/content/www/us/en/do-it-yourself/get-help.html Intel Maker Support
Following the links down the page for Galileo (isn't that what we clicked on origionally.... anyways....) we get https://software.intel.com/en-us/iot/hardware/galileo/downloads https://software.intel.com/en-us/iot/hardware/galileo/downloads
We then look for BSP.. and we get a link to http://downloadmirror.intel.com/24355/eng/BSP-Patches-and-Build_Instructions.1.0.4.txt BSP Patches and Build Instructions which is again.. outdated.
So, that's problem # 1. Getting the newest documentation and relevant instructions.
2) Where is your repo? Do you have instructions on how to use it? Is it a github repo, is it a package repo? I also don't know what "if you use my image based on 1.0.4 or the 1.0.4 itself" means.
3) I'm not sure where to run "just try opkg update && opkg install kernel-dev" either. Is that after the image is built, and I'm running it on the galileo?
I think maybe the problem with the Galileo instructions is the assumption that someone coming into this knows all these subtleties. Which is kind of what makes yocto a very poor choice. Have a supported repo for something, like debian, redhat, or whatever just makes things easier. I mean... you really have to force yourself to use this thing.
I've searched the forums and the internet and have not found anything helpful. Have you tried the instructions in the thread? It does not have ANY valid info. The pdf linked only shows how to use the watchdog timer once it's enabled.. cool.... but not helpful for right now. It also says to do something to a file that does not exist on the build system... anywhere (i used locate). I'm clearly missing something here that everyone has figured out. Some piece of the puzzle that makes this all fit together.
I mean, seriously, walk through the instructions with the files that I have. If you can configure the watchdog timer, I will take you out to lunch.
Okay, I see your pain, though I think at least some of it could be solved with a friendly advice because most of it comes from the lack of experience with these things (which is fine), so here comes:
1) libgphoto & gphoto - just don't try to use Yocto to build it if you don't need to. Galileo is a full-featured Linux computers and the second best (or the first best if you ask some people) way to obtain software on *nix is to compile that from sources on that computer (not cross-compiling using Yocto or whatever). So just get to your board via SSH, download libgphoto & gphoto2 tarballs, unpack them and follow the readme to compile and install them. Most frequently it boils down to "./configure && make && make install". You might need to get some dependencies first, but the process is essentially the same. That way you get rid of the Yocto layer, which is just too much for such an ad-hoc software installation, its strengths are elsewhere.
2) Kernel headers: You are trying to use Quark BSP 1.1.0, don't - while Galileo is basically just a Quark and even vanilla BSP works fine, there are some tweaks to be done and the last BSP version for which they were prepared was 1.0.1. BSP+tweak is called "Galileo software release 1.0.4" and that's the number you see in the image file name. Those files with instructions you crossed out as outdated are actually okay - it's just the case that it was a while ago. Basic process is - just follow the readme in that file. You download the BSP (link is given there), apply patches according to instructions and build the image by "bitbake image-full-galileo" or "image-spi-galileo".
3) Documentation: To be honest I think it could be simplified and the website redesign which happened a while ago and left the same things in several places (which is what you see) didn't help that too. This link is up to date: https://software.intel.com/en-us/iot/hardware/galileo/downloads IoT - Intel® Galileo Board Download | Intel® Developer Zone, so just use it and forget about other ones - that would be the simplest and you have all the necessary (and up to date) pieces there - with explanations what is what by the way. The forum is here for the rest - just search or ask, most if not all things you've got stuck on were actually discussed here and the search works really well, I resort to it from time to time as well
4) Images: SD card image is the bigger one, which contains additional drivers and applications (OpenCV, NodeJS, etc) + allows for sketch persistency between reboots, you boot it from SD card as opposed to the onboard SPI flash (it contains so called SPI image), which is what Galileo boots in the absense of an SD card image. SPI one has only barebones Linux (it's only 8MB in size and it contains UEFI as well) and sketches you upload are not preserved. So just two images - big one and small built-in one.
There's another image called IoT DevKit, which is functionally equivalent to the SD card image, but is built based on eglibc as opposed to the original SD card image, which is based on uClibc, which in turn somewhat limits your abilities to compile already existing software for the board due to uClibc limitations. DevKit image has more full-featured eglibc and also supports programs built with uClibc for backwards compatibility - that's probably why it becase the only officially supported image recently (see the downloads page for the note about that).
4) "My repo": is a package repository I've built and support, actually two - one for Galileo and one for Edison. Similar to those rpm repos you've used to with general-purpose distros. Configuration instructions and details are here: http://alextgalileo.altervista.org/package-repo-configuration-instructions.html Galileo Package Repo Configuration Instructions. For Galileo the repo [for now] supports that original uClibc-based image (the one with 1.0.4 in the name, this: http://downloadmirror.intel.com/24355/eng/SDCard.1.0.4.tar.bz2 http://downloadmirror.intel.com/24355/eng/SDCard.1.0.4.tar.bz2), DevKit image has its own repo supported by Intel (my repo on the contrast is what I do beyond work in my free time) and it's preconfigured in the image - so you just run the opkg commands to use it. Opkg is the package manager used in Edison and Galileo images, much like rpm.
5) the watchdog - I'm talking about this thread and this specific post and it actually explains it, probably you don't see it because you have not reconfigured Linux kernel before? The reply, though short, means to me that you need to enable the generic watchdog options in the Linux kernel config + enable the ie6xx_wdt driver, which must be another kernel config option. That BSP build guide linked from http://downloadmirror.intel.com/24355/eng/BSP-Patches-and-Build_Instructions.1.0.4.txt http://downloadmirror.intel.com/24355/eng/BSP-Patches-and-Build_Instructions.1.0.4.txt you treat as outdate is actually fine - I just see that it doesn't have a section on customizing the kernel config, they've added it for Edison based on the feedback. So just see the Edison BSP build guide: http://www.intel.com/support/edison/sb/CS-035278.htm Intel® Edison Boards — Board Support Package (BSP) User Guide, section 5. The paths will be a bit different for Galileo, but the process itself is very similar and I think you should be able to find those by analogy.
That was a long and I sincerely hope useful post
Thank you again for your post (they really are appreciated). I'll download and follow those instructions. It seemed like they were outdated because of the mixed versions (the old doc does not work with the newer 1.1.0 package). As far as the gphoto stuff goes, I had already created my own packaging for it by compiling on the galileo directly and resolving dependencies (not so easy, but doable).
Thanks again, and if you're ever in San Diego, let me know and I'll buy you that lunch
Can't seem to get this version to build
| DEBUG: Python function base_do_unpack finished
| DEBUG: Python function do_unpack finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| fatal: reference is not a tree: 1cffe9f406cc54f4759fc9eeb85598fb8cae66c7
ERROR: Task 2232 (/home/byoakum/galileo/Galileo-Runtime-1.0.4/meta-clanton_v1.0.1/meta-oe/meta-oe/recipes-multimedia/x264/x264_git.bb, do_unpack) failed with exit code '1'
NOTE: Tasks Summary: Attempted 1082 tasks of which 1068 didn't need to be rerun and 1 failed.
Waiting for 0 running tasks to finish:
Summary: 1 task failed:
Summary: There was 1 ERROR message shown, returning a non-zero exit code.