How to install a kernel from my repo onto Edison with the official image

UPDATE 23-Apr-2015 I’ve slightly updated the instructions for the latest official image – there are no major differences, but nevertheless.

In this post I’d like to describe a way to install a kernel from my package repository onto the Edison board flashed with the official image.

In my custom build, which is a base for the package repo, I enable additional useful options in the kernel such as webcam drivers or USB sound support (UPDATE 15-Mar-2015 – USB audio drivers are now in the official image as well, just note you won’t see them with lsmod, because they were added statically. uvcvideo driver is also there, as a module), or other drivers and features.
Installing such a kernel + respective modules from the repo is a very fast way to get the functionality you need without building the whole thing by yourself out of the BSP using the Yocto framework.

And the process is rather simple. Let’s run through it step-by-step. As always, it’s a good idea to back up your valuable files and settings before you go into something like this, in case something goes wrong along the way (remember Murphy’s laws?). Also, even though being step-by-step, this guide assumes some degree of understanding from you, so if you are totally unfamiliar with Linux, double-check you have all the data dear to your heart backed up before starting, as the chances to screw something up are higher when you don’t fully understand what you’re doing :)

    UPDATE 15-Mar-2015: As of Edison Release 2 image (the one with “ww05” in the name) it may not be necessary to perform this step as they’ve fixed the /boot partition size. For that to be applied though, you need to update the image using flashall.bat/.sh and not the OTA. So if you used flashall and your /boot is about 32MB in size – just proceed to step 4 right away, if not – execute all the steps below.

    First, we need to resize the file system on the /boot partition. As of today the actual partition is bigger (~32MB) than the file system written to it by the flashing process (~6MB). Kernel file is around 5MB, so two of them won’t fit and that’s necessary during the upgrade. So let’s resize it, backing up the data and restoring it back afterwards.

  1. Backup the data:

    [email protected]:~# ls -alF /boot
    drwxr-xr-x    2 root     root         16384 Jan  1  1970 ./
    drwxr-xr-x   22 root     root          4096 Nov 11 18:10 ../
    -r-xr-xr-x    1 root     root        115472 Oct 14 15:34 ldlinux.c32*
    -r-xr-xr-x    1 root     root         59904 Oct 14 15:34 ldlinux.sys*
    -rwxr-xr-x    1 root     root           198 Oct 14 15:34 syslinux.cfg*
    -rwxr-xr-x    1 root     root       5127648 Oct 14 15:34 vmlinuz*
    
    [email protected]:~# mkdir /home/root/boot-backup
    
    [email protected]:~# cp -rp /boot/* /home/root/boot-backup/
    
    [email protected]:~# ls -alF /home/root/boot-backup/
    drwxr-xr-x    2 root     root          4096 Nov 11 18:22 ./
    drwxr-xr-x    9 root     root          4096 Nov 11 18:21 ../
    -r-xr-xr-x    1 root     root        115472 Oct 14 15:34 ldlinux.c32*
    -r-xr-xr-x    1 root     root         59904 Oct 14 15:34 ldlinux.sys*
    -rwxr-xr-x    1 root     root           198 Oct 14 15:34 syslinux.cfg*
    -rwxr-xr-x    1 root     root       5127648 Oct 14 15:34 vmlinuz*
    
  2. Resize the partition:

    [email protected]:~# umount /boot
    
    [email protected]:~# mkfs.vfat -v -nboot -F16 /dev/mmcblk0p7
    mkfs.vfat 2.11 (12 Mar 2005)
    /dev/mmcblk0p7 has 4 heads and 16 sectors per track,
    logical sector size is 512,
    using 0xf8 media descriptor, with 65536 sectors;
    file system has 2 16-bit FATs and 4 sectors per cluster.
    FAT size is 64 sectors, and provides 16343 clusters.
    Root directory contains 512 slots.
    Volume ID is 546254fe, no volume label.
    
    [email protected]:~# mount /boot
    
    [email protected]:~# df -h /boot
    Filesystem                Size      Used Available Use% Mounted on
    systemd-1                31.9M         0     31.9M   0% /boot
    
  3. Restore data:

    [email protected]:~# cp -rp /home/root/boot-backup/* /boot
    
    [email protected]:~# ls -alF /boot
    drwxr-xr-x    2 root     root         16384 Nov 11 18:31 ./
    drwxr-xr-x   22 root     root          4096 Nov 11 18:10 ../
    -r-xr-xr-x    1 root     root        115472 Oct 14 15:34 ldlinux.c32*
    -r-xr-xr-x    1 root     root         59904 Oct 14 15:34 ldlinux.sys*
    -rwxr-xr-x    1 root     root           198 Oct 14 15:34 syslinux.cfg*
    -rwxr-xr-x    1 root     root       5127648 Oct 14 15:34 vmlinuz*
    
    [email protected]:~# rm -r /home/root/boot-backup
    

    Here you can try restarting your board to make sure it’s still booting properly. It should, because we haven’t done anything to the kernel so far, so this is a good checkpoint.

  4. Now configure the package manager on your board according to these instructions, if you haven’t done it yet. Run opkg update to make sure you have the latest meta-data.
  5. Upgrade kernel packages:

    [email protected]:~# opkg install kernel-3.10.17-yocto-standard kernel-image-3.10.17-yocto-standard
    <...some long opkg output cut...>
    Configuring kernel-image-3.10.17-yocto-standard.
    ln: //boot/bzImage: Operation not permitted
    Configuring kernel-3.10.17-yocto-standard.
    [email protected]:~#
    

    Ignore the “Operation not permitted” message, it’s harmless in our case (we’ll fix that manually).

  6. Replace the old kernel with the new one, preserving the old one just in case:

    [email protected]:~# ls -alF /boot
    drwxr-xr-x    2 root     root         16384 Apr 23 21:01 ./
    drwxr-xr-x   21 root     root          4096 Jan 21 17:14 ../
    -rwxr-xr-x    1 root     root       5300384 Mar  1 17:36 bzImage-3.10.17-yocto-standard*
    -r-xr-xr-x    1 root     root        115472 Jan 30 14:23 ldlinux.c32*
    -r-xr-xr-x    1 root     root         59904 Jan 30 14:23 ldlinux.sys*
    -rwxr-xr-x    1 root     root           198 Jan 30 14:23 syslinux.cfg*
    -rwxr-xr-x    1 root     root       5348960 Jan 30 14:23 vmlinuz*
    
    [email protected]:~# mv /boot/vmlinuz /boot/vmlinuz.original.ww05
    
    [email protected]:~# mv /boot/bzImage-3.10.17-yocto-standard /boot/vmlinuz
    
    [email protected]:~# ls -alF /boot
    drwxr-xr-x    2 root     root         16384 Apr 23 21:02 ./
    drwxr-xr-x   21 root     root          4096 Jan 21 17:14 ../
    -r-xr-xr-x    1 root     root        115472 Jan 30 14:23 ldlinux.c32*
    -r-xr-xr-x    1 root     root         59904 Jan 30 14:23 ldlinux.sys*
    -rwxr-xr-x    1 root     root           198 Jan 30 14:23 syslinux.cfg*
    -rwxr-xr-x    1 root     root       5300384 Mar  1 17:36 vmlinuz*
    -rwxr-xr-x    1 root     root       5348960 Jan 30 14:23 vmlinuz.original.ww05*
    
  7. Update installed kernel modules. They are identical to those in the repo, generally speaking, but just to have the same versions in the package meta-info and avoid confusion down the road. Note that the opkg command below is a single command line.

    [email protected]:~# opkg install kernel-module-aufs kernel-module-bcm-bt-lpm kernel-module-g-multi kernel-module-gspca-main kernel-module-iio-trig-sysfs kernel-module-libcomposite kernel-module-mac80211 kernel-module-test-nx kernel-module-u-serial kernel-module-usb-f-acm kernel-module-uvcvideo kernel-module-videobuf2-core kernel-module-videobuf2-memops kernel-module-videobuf2-vmalloc
    <...some long opkg output cut...>
    Configuring kernel-module-g-multi.
    modprobe: ERROR: /data/jenkins_worker/workspace/edison-weekly/build/tmp/work/core2-32-poky-linux/kmod/16+gitAUTOINC+36c4bb928a-r0/git/libkmod/libkmod-module.c:180 kmod_module_parse_depline() ctx=0x9ef4008 path=/lib/modules/3.10.17-poky-edison+/kernel/drivers/usb/gadget/libcomposite.ko error=No such file or directory
    [email protected]:~#
    

    Ignore the last error line, it’s harmless in our case.

  8. Update the WiFi/BT module:

    [email protected]:~# opkg install --force-reinstall kernel-module-bcm4334x
    Removing package kernel-module-bcm4334x from root...
    Installing kernel-module-bcm4334x (1.141-r47) to root...
    Downloading http://repo.opkg.net/edison/repo/edison/kernel-module-bcm4334x_1.141-r47_edison.ipk.
    Configuring kernel-module-bcm4334x.
    modprobe: FATAL: Module bcm4334x not found.
    

    Disregard the error message, it’s harmless.

  9. (optional, you can install modules one by one if needed) Install all the modules I’ve added like ipfilter or others by running

    [email protected]:~# opkg install kernel-modules
    <...some long opkg output cut...>
    Configuring kernel-modules.
    [email protected]:~#
    
  10. Finally, reboot the board to have the kernel and modules reloaded.
    Check the kernel version before the reboot:

    [email protected]:~# uname -a
    Linux edison1 3.10.17-poky-edison+ #1 SMP PREEMPT Fri Jan 30 14:16:35 CET 2015 i686 GNU/Linux
    

    Reboot:

    [email protected]:~# reboot
             Unmounting Mount for SDCard...
             Unmounting /home...
             Unmounting /boot...
             <...some long output cut...>
    

    After the board is booted – check the new kernel version:

    [email protected]:~# uname -a
    Linux edison1 3.10.17-yocto-standard #6 SMP PREEMPT Sun Mar 1 18:33:18 CET 2015 i686 GNU/Linux
    

And that’s it! It may have seemed long, but that’s just because I wanted to expose in detail what each step does, so that you understand the mechanics better. In case you have questions or troubles following the HowTo, use this thread on the Edison Community forum to ask for help.

Previous Entries Updated Galileo "devtools" image is out Next Entries Let's make some noise (or how to play audio on Edison)

47 thoughts on “How to install a kernel from my repo onto Edison with the official image

  1. Flavio on said:

    Hi Alex,
    I’ve been following your Intel Edison posts and learning a lot from your advise and help. I’d like to ask you a question related to the above post. .You’ve mentioned over at the Intel Communities website, that you were able to play and record sound using Edison. I would greatly appreciate if you could let us know how you hook up the speaker and microphone to the Edison.
    I have a Edison breakout board (the non-arduino shield one), and although I can follow your instructions above on how to install ALSA, the kernel and modules, I am struggling in trying to visualize the basic wiring hookup of the speakers and microphone and which pins to use on the Edison breakout board.

    I’d appreciate your guidance.
    Regards
    Flavio

  2. Flavio on said:

    Hi Alex,
    FYI, my microphone is this one: https://www.adafruit.com/product/1713

    The speakers, are just simple two-wire 8 ohmn speakers.

    Let me know, if I should acquire a different one in order to be able to record sund just like you were..

    Again, thank you in advance for your time and attention
    Flavio

  3. Hi Flavio,

    In case I haven’t yet replied in the forums (there was a very similar question recently) – the best would actually be a USB sound card. That would provide you with microphone in and audio out and (after installing a usb-snd-audio kernel module on Edison) allow for recording as well as playing audio using ALSA utils or anything else, which can use standard ALSA devices (e.g. your own software).

  4. Great post.
    I updated the IoT Dev Kit libmraa, UPM.
    Based on https://github.com/intel-iot-devkit/mraa I added /etc/opkg/mraa-upm.conf with this content:
    src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic

    Getting this:
    [email protected]:~# opkg info libmraa0 | head -n 2
    Package: libmraa0
    Version: 0.5.2.42

    [email protected]:~# opkg info upm | head -n 2
    Package: upm
    Version: 0.1.8.55

    When I do your update it reverts them back to an older version.

    [email protected]:/etc/opkg# opkg info libmraa0 | head -n 2
    Package: libmraa0
    Version: 0.4.4c-r0

    [email protected]:/etc/opkg# opkg info upm | head -n 2
    Package: upm
    Version: 0.1.7-r0

    How can I have both up-to0date, please?

  5. Hi Ivan, sorry for a bit late reply – I’ve missed your post among all the spam these bots post everywhere.
    Try it now – I’ve added the packages built from the latest sources recently.

  6. Hi Chris,

    I’m publishing all my additions and changes to my GitHub repo, for Edison that would be: https://github.com/alext-mkrs/meta-alext-edison

    As far as your request is concerned, (even though I’m not the right person to direct such request to, neither I’m able to meaningfully comment what plans the dev team has, I just don’t know) I think that’s a good idea and I guess upstreaming is on the dev team’s plan, because it would just make sense to do that. Maybe they’re just focusing on fully enabling the board first, which for me personally would provide more value than upstreaming right away. We shall wait and see :)

    regards,
    Alex

  7. Dieter on said:

    I tried to follow the instructions, but the mentioned kernel package is not available as it seems (I did step 4 successfully):

    opkg install kernel-3.10.17-poky-edison+ kernel-image-3.10.17-poky-edison+

    Results in:

    Package wireless-tools version 1:30.pre9-r0 has no valid architecture, ignoring.
    Package kernel-3.10.17-poky-edison+ (1.0-r2) installed in root is up to date.
    Unknown package ‘kernel-image-3.10.17-poky-edison+’.
    Configuring libaio1.
    /sbin/ldconfig: Writing of cache data failed
    Collected errors:
    * parse_from_stream_nomalloc: Missing new line character at end of file!
    * parse_from_stream_nomalloc: Missing new line character at end of file!
    * parse_from_stream_nomalloc: Missing new line character at end of file!
    * opkg_install_cmd: Cannot install package kernel-image-3.10.17-poky-edison+.
    * pkg_run_script: package “libaio1” postinst script returned status 1.
    * opkg_configure: libaio1.postinst returned 1.

    Actually I do not even know if installing this kernel will help with my problem. I am trying to get a LAMP setting up and running on the Edison, but I ran out of space (see post https://communities.intel.com/message/282960). So I hoped that by following these instructions will resize the filesystems/partitions….
    … and, yes, my knowledge of Linux is VERY limited… ;-)

  8. Dieter on said:

    Never mind. I found the solution to my problem, which has nothing to do with this topic.

  9. Renha on said:

    Hello, just have installed all as described in article on ww05-15 Edison, and now I have “unable to initialize libusb: -99” when I trying to run lsusb

  10. Glad to read you’ve solved it and indeed, installing the kernel from my repo is not really necessary to run LAMP :)

  11. I’m hoping I don’t have to install the kernel since I’m using Edison’s Release 2?
    I’ve attached a USB headset and I can record and play *.wav files just fine with arecord/aplay – so I assume I have basic hardware connectivity. But when I use a package (pocketsphinx) that is looking for an audio device (default is /dev/dsp – but there is an argument to specify it) and I don’t know what to specify here.

    I’m hoping that it’s something as simple as getting the device registered so that it shows up in lsmod – but right now there are no snd_usb_audio devices there. Do you know what I’m missing? Thanks.

    lsmod
    Module Size Used by
    usb_f_acm 14335 1
    u_serial 18582 6 usb_f_acm
    g_multi 70813 0
    libcomposite 39245 2 usb_f_acm,g_multi
    bcm_bt_lpm 13676 0
    bcm4334x 578947 0

    Other configurations:
    arecord -L
    null
    Discard all samples (playback) or generate zero samples (capture)
    sysdefault:CARD=Loopback
    Loopback, Loopback PCM
    Default Audio Device
    sysdefault:CARD=Headset
    Cyber Acoustics USB Headset, USB Audio
    Default Audio Device

    cat /proc/asound/pcm
    00-00: Loopback PCM : Loopback PCM : playback 8 : capture 8
    00-01: Loopback PCM : Loopback PCM : playback 8 : capture 8
    01-00: USB Audio : USB Audio : playback 1 : capture 1

  12. massca on said:

    Hi Alex,
    great work.
    I have the latest image ww05, I tried to follow your istruction but I can go after step 6. because in the /boot there is not a bzImage-3.10.17-poky-edison+ file

    If I perform the other steps but the update of bcm4334x fails, networking die and I need to reflash the Edison (see below):

    [email protected]:~# opkg install –force-reinstall kernel-module-bcm4334x
    Removing package kernel-module-bcm4334x from root…
    Installing kernel-module-bcm4334x (1.141-r47) to root…
    Downloading http://repo.opkg.net/edison/repo/edison/kernel-module-bcm4334x_1.141-r47_edison.ipk.
    Configuring kernel-module-bcm4334x.
    modprobe: FATAL: Module bcm4334x not found.
    [email protected]:~# modprobe -r bcm4334x
    modprobe: FATAL: Module bcm4334x not found.
    [email protected]:~# modprobe bcm4334x
    modprobe: FATAL: Module bcm4334x not found.

    Can you please help me?

    Thanks
    -massimo

  13. allen edwards on said:

    Alex,
    I need to install a ftdi driver in edison but using opkg and your driver fails. I have spent hours on suggestions from the forums but nothing works. Ftdi tech support was no help. What is the best way to do this? This iseems to be a problem with the ww05-15 release.

  14. Hanumant on said:

    Hi

    I installed the march 15th image. But on doing lsmod I didnot find the use snd modules installed as shown in your instructions here
    http://alextgalileo.altervista.org/blog/lets-make-noise-play-audio-edison/

    (However the lsusb command was able to detect my plantronics usb headset.)

    So i decided to pursue the kernel update instructions on this page, but on running step 5, i get the following output
    Package kernel-3.10.17-poky-edison+ (1.0-r2) installed in root is up to date.
    Package kernel-image-3.10.17-poky-edison+ (1.0-r2) installed in root is up to date.

    After that the step 6 cannot be performed because /boot/bzImage-3.10.17-poky-edison doesnot exist.

    Have I missed some step?

  15. Hi Sean, you aren’t missing anything here w.r.t. the driver, as mentioned in the updated blog post, starting from R2 the snd-usb-audio driver is included statically into kernel, so you won’t see it in the lsmod output, but it will work (as you have already found out yourself). So if that was the only reason then yeah, you don’t need to install the kernel from my repo.

  16. Hi Massimo, generally speaking the module should be there. What does lsmod return at that moment? have you tried to simply reboot the board?

  17. If you post the actual errors you see or define “fails” more precisely I should be able to advise more meaningfully :) Generally it should just work.

  18. Generally speaking you don’t need to do that, because starting from R2 (March) image the driver is included statically into the kernel.

  19. Allen Edwards on said:

    @AlexT. When I say the FTDI driver fails, there is no message. What I would expect is to see an assignment to ttyUSB0 but what I get when I plug in the FTDI cable is the same as I would get had I not installed the driver. I do get an error the first time I try opkg and install the driver but issuing the opkg command a second time runs without error.

    [email protected]:~# opkg install kernel-module-ftdi-sio
    Installing kernel-module-ftdi-sio (3.10.17+git0+6ad20f049a_c03195ed6e-r0) to root…
    Downloading http://repo.opkg.net/edison/repo/edison/kernel-module-ftdi-sio_3.10.17+git0+6ad20f049a_c03195ed6e-r0_edison.ipk.
    Installing kernel-3.10.17-yocto-standard (3.10.17+git0+6ad20f049a_c03195ed6e-r0) to root…
    Downloading http://repo.opkg.net/edison/repo/edison/kernel-3.10.17-yocto-standard_3.10.17+git0+6ad20f049a_c03195ed6e-r0_edison.ipk.
    Installing kernel-image-3.10.17-yocto-standard (3.10.17+git0+6ad20f049a_c03195ed6e-r0) to root…
    Downloading http://repo.opkg.net/edison/repo/edison/kernel-image-3.10.17-yocto-standard_3.10.17+git0+6ad20f049a_c03195ed6e-r0_edison.ipk.
    Configuring kernel-image-3.10.17-yocto-standard.
    ln: //boot/bzImage: Operation not permitted
    Configuring kernel-3.10.17-yocto-standard.
    Configuring kernel-module-ftdi-sio.
    Collected errors:
    * copy_file_chunk: write: No space left on device.

  20. I see. Out of the command log you’ve provided it’s apparent that when you try to install the FTDI module, it pulls the kernel from the repository as well (are you on R2 image, the latest released one, with “ww05” in the name?), which doesn’t install automatically, that’s expected and is a reason I wrote this whole post in the first place. Second, looks like you’ve filled your whole rootfs partition (“No space left on device”), which is another thing to address.

    All in all, I’d start from flashing the board with the latest official image to make sure you start off of a known working configuration, make sure you have enough disk space and then just execute the instructions from this post as listed (don’t jump to the ftdi module installation right away).

  21. massca on said:

    Hi Alex,
    bcm4334x module doesn’t load anymore, this force me to reflash the board. I tried twice. Are you able to execute successfuly all procedure on the ww05-15 build?
    Now I learned how to made a custom build with BSP and I can install kernel drivers from your repository without change the kernel.
    I wander if it possible to build a repository that doesn’t need to change the kernel, ie can use 3.10.17-poky-edison+ instead of 3.10.17-yocto-standard.

  22. allen edwards on said:

    Hi Alex,

    I am still trying to get the FTDI driver installed. I followed your instructions above. 1,2,3,and 4 went as expected. I am using ww05-15 but found errors if I skipped those steps. Step 5 gave an unexpected result

    [email protected]:~# opkg install kernel-3.10.17-poky-edison+ kernel-image-3.10.17-poky
    -edison+
    Package kernel-3.10.17-poky-edison+ (1.0-r2) installed in root is up to date.
    Package kernel-image-3.10.17-poky-edison+ (1.0-r2) installed in root is up to date.

    But that looked like a good thing but meant I could not do step 6. Step 7 gave an unexpected error.

    modprobe: ERROR: /data/jenkins_worker/workspace/edison-weekly/build/tmp/work/cor e2-32-poky-linux/kmod/16+gitAUTOINC+36c4bb928a-r0/git/libkmod/libkmod-module.c:1 80 kmod_module_parse_depline() ctx=0x841a008 path=/lib/modules/3.10.17-poky-edis on+/kernel/drivers/usb/gadget/libcomposite.ko error=No such file or directory

    The rest of the instructions looked to me like they were installing things I did not need or want as all I want is the FTDI driver. So I did this

    opkg install kernel-module-ftdi-sio

    And it ran without error. The larger boot directory was obviously helpful.

    But it doesn’t work.

    This is my output of dmesg

    [ 375.318542] hub 2-0:1.0: USB hub found
    [ 375.318585] hub 2-0:1.0: 1 port detected
    [ 375.381504] pmic_ccsm pmic_ccsm: USB VBUS Detected. Notifying OTG driver
    [ 375.633912] usb 1-1: new full-speed USB device number 2 using dwc3-host
    [ 375.664197] usb 1-1: New USB device found, idVendor=0403, idProduct=6015
    [ 375.664228] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [ 375.664249] usb 1-1: Product: FT231X USB UART
    [ 375.664268] usb 1-1: Manufacturer: FTDI
    [ 375.664286] usb 1-1: SerialNumber: DA01L0SQ

    And as you can see there is no assignment to ttyUSB0, which is the goal and what the driver should accomplish and is what I mean by “does not work”.

    I should note that this project is for training the US Olympic Finn Sailing team. I am building this on a volunteer basic and have spent a ton of time on various ideas from Intel and other helpful people but none of them work. I have a deadline in early May so time is short. The breakout board has a FTDI chip on it and that breakout board interfaces with the radio that the boats will use to talk to each other. It is critical that I get this working and I would really appreciate some guidance on where I went wrong preferably on a set of instructions that is known to work.

    Allen

  23. allen edwards on said:

    I should add that after I did what I did, on bootup I got an error on not loading kernel and the USB A/B port would no longer power my FTDI breakout board. I re flashed the Edison and now at least the light goes on showing the breakout board is powered up.

    Another 3 hours today trying to get FTDI driver installed.

    Allen

  24. allen edwards on said:

    I gave it one more try. This time I created some scrips that others might find useful. The first executes steps to make boot larger:

    #!/bin/sh
    ls -alF /home/root/boot-backup/
    mkdir /home/root/boot-backup
    cp -rp /boot/* /home/root/boot-backup/
    ls -alF /home/root/boot-backup/
    umount /boot
    mkfs.vfat -v -nboot -F16 /dev/mmcblk0p7
    mount /boot
    df -h /boot
    cp -rp /home/root/boot-backup/* /boot
    ls -alF /boot

    The second sets up the repo

    #!/bin/sh
    echo src/gz all http://repo.opkg.net/edison/repo/all > /etc/opkg/base-feeds.conf
    echo src/gz edison http://repo.opkg.net/edison/repo/edison >> /etc/opkg/base-feeds.conf
    echo src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32 >> /etc/opkg/base-feeds.conf
    opkg update

    I did chmod 775 to enable them and ran them.

    Step 5 still doesn’t do anything and I went ahead and tried step 6, which failed as no such file existed. Step 8 failed, no such module. I ran step 9 and saw that the ftdi module was included in the list of packages installed.

    The net result was again that connecting the FTDI module did not cause an assignment to ttyUSB0 and upon reboot, the module was not even powered up. It is powered via the OTG port. But the next reboot I did at least powered up the module.

    Here is the part of dmesg that is written after the FTDI module is attached:

    137.253163] pmic_ccsm pmic_ccsm: USB ID Detected. Notifying OTG driver
    [ 138.115738] dwc3-host dwc3-host.2: xHCI Host Controller
    [ 138.116404] dwc3-host dwc3-host.2: new USB bus registered, assigned bus number 1
    [ 138.116657] dwc3-host dwc3-host.2: irq 34, io mem 0xf9100000
    [ 138.116800] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [ 138.116825] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 138.116845] usb usb1: Product: xHCI Host Controller
    [ 138.116864] usb usb1: Manufacturer: Linux 3.10.17-poky-edison+ dwc-xhci
    [ 138.116883] usb usb1: SerialNumber: dwc3-host.2
    [ 138.117655] xHCI xhci_add_endpoint called for root hub
    [ 138.117675] xHCI xhci_check_bandwidth called for root hub
    [ 138.117953] hub 1-0:1.0: USB hub found
    [ 138.117998] hub 1-0:1.0: 1 port detected
    [ 138.118575] dwc3-host dwc3-host.2: xHCI Host Controller
    [ 138.118971] dwc3-host dwc3-host.2: new USB bus registered, assigned bus number 2
    [ 138.119141] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
    [ 138.119165] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 138.119185] usb usb2: Product: xHCI Host Controller
    [ 138.119204] usb usb2: Manufacturer: Linux 3.10.17-poky-edison+ dwc-xhci
    [ 138.119222] usb usb2: SerialNumber: dwc3-host.2
    [ 138.119886] xHCI xhci_add_endpoint called for root hub
    [ 138.119907] xHCI xhci_check_bandwidth called for root hub
    [ 138.120193] hub 2-0:1.0: USB hub found
    [ 138.120238] hub 2-0:1.0: 1 port detected
    [ 138.183576] pmic_ccsm pmic_ccsm: USB VBUS Detected. Notifying OTG driver
    [ 138.435741] usb 1-1: new full-speed USB device number 2 using dwc3-host
    [ 138.466232] usb 1-1: New USB device found, idVendor=0403, idProduct=6015
    [ 138.466264] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [ 138.466285] usb 1-1: Product: FT231X USB UART
    [ 138.466303] usb 1-1: Manufacturer: FTDI
    [ 138.466321] usb 1-1: SerialNumber: DA01L0SQ

    Here are the last few lines of dmesg when a USB to RS232 device for which there is a driver is plugged in. Note the last line. When that line is missing, the driver has failed:

    [ 34.481833] usb 1-1: New USB device found, idVendor=067b, idProduct=2303
    [ 34.481864] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 34.481885] usb 1-1: Product: USB-Serial Controller
    [ 34.481904] usb 1-1: Manufacturer: Prolific Technology Inc.
    [ 34.486497] pl2303 1-1:1.0: pl2303 converter detected
    [ 34.488926] usb 1-1: pl2303 converter now attached to ttyUSB0

    The device I have is an 800MHz radio made by XBee and the interface board for that radio has a FTDI chip on it and a USB port that should interface to Edison OTG port. I have no choice, this part uses an FTDI chip.

  25. Well, to be honest I don’t recall if I specifically checked the whole procedure by myself, but I recall there were reports in the Intel Edison community that it worked fine.
    As far as the kerne is concerned – generally yes, that should be possible and it is my goal to converge the two in the future. I haven’t done that yet due to some differences in configs used by me and official image developers. As they open-source all the pieces, this difference should go away, so watch this space.

    Back to the bcm module – I’ll double-check it as soon as I can, thanks for letting me know. We’ll see if there’s indeed some glitch. Shouldn’t be, because the module is built along with the kernel, but we’ll see.

  26. Sorry for slow responces – real life calimed its rights. So generally speaking it looks like the driver does work to the point that it recognizes the device. Are you able to see the device details in the “lsusb” output after that? Generally speaking, ttyUSB0 device creationis not directly related to the driver, it’s a different OS subsystem that creates that, usually udev. To be honest I’m not sure why you don’t see it being created when the device seems to be recognized just fine, but in any case you can try creating the necessary device manually, as a quick workaround. See e.g. here for details on how to do that: http://www.sealevel.com/support/article/AA-00524/0/How-to-configure-USB-serial-adapters-in-Linux.html

  27. jason on said:

    Hi Alex:
    I have exactly same problem. Our team had this work last year. We bought new 4 edisons and now none of them can find the ttyusb0, I think is the FTDI kernel needs to update?
    My teammates are freak out since our project has to be done in 5 days….

  28. Well, it’s hard to say – maybe it’s the device specific you are facing here? Are you using the same FTDI device as Allen?

  29. jason on said:

    Hi AlexT:
    I really think its the conflict problem with the operating system.
    My project works last year Nov when I download the FTDI driver and pip for pi library. The “serial” works just fine.
    But this April I bought another 4 Edisons, doing the same procedure, it doesn’t work now.
    I also see the posts, it seems from March, other people’s ftdi does not work as well.

  30. Feel free to chime in to that dicussion in the Community forum, describing your setup and the errors you get in detail. That could help getting to the root cause of this if there’s a single root of these problems.

  31. EthanHunt on said:

    Hey Alex,
    I have followed all your instruction to update the kernel, but after last command reboot, my board can’t start with newer kernel and it is waiting to boot kernel and after waiting for sometime it is restarting every time, so please can you help me, what is the problem with that?
    Or I have to flash again Yocto image as last option and can I able to do that?

  32. EthanHunt on said:

    Hey Alex,
    Now even I can’t able to reflash again with default yocto image, so i think newer kernel version crashed my edison board. So please give me a solution to regain edison board in its default state. Please help me with this, as my project submission is on this Friday and I crashed my edison kernel. I am currently in a quite mess condition. I will appreciate your help. Thanks.

  33. Well, too bad you faced something like this, that’s generally why it makes sense to go after this only if you know what you’re doing, or at least you need to watch out for errors or discrepancies between the expected command result and the one you get.

    The instructions are tried and true, so there must have been some error related to e.g. the disk overfilling along the way.

    To restore the board in it’s original state you can simply reflash it using the flashall.sh/flashall.bat method, see e.g. here or here for details. Searching Intel Community for “flashall.bat” will yield some additional threads on this.

  34. EthanHunt on said:

    Yeah, I recovered by board back again. Thanks Alex. I was getting same results as you described over here no additional errors, still I will try it again. If I will install this kernel from your repo then will I able to detect my web camera(Microsoft HD 3000) on that kernel image also?

  35. Glad you’ve restored your board.

    Yes, the kernel in my repo is also compiled with uvcvideo driver enabled, just install the kernel-module-uvcvideo package.

  36. Allen Edwards on said:

    Does your repo support release 2.1 (ww18-15)? You say “latest release” but date that before the date on the latest release which looks like 5/1/2015.

  37. Andy on said:

    Yes, it would be nice in some cases, though we are using netboot, i.e. loading kernel, cmdline and initrd via network and run them via kexec. This doesn’t require any flashing procedure at all (after the netboot image is put on the device).

  38. AlexT much like EthanHunt I followed the instructions and it seemed to go well, rebooted and it bricked my board. Wifi doesnt work, doesnt come up as a drive using the OTG cable anymore, I can only connect over putty. Tried executing “flashall” on the terminal but it just gives me “-sh flashall: command not found”. I am stumped for what to try next, any ideas?

  39. Well,if you can connect over putty and see something meaningful, that apparently means it’s not bricked :) (but there is no single definition of bricked, of course).

    Anyway, the best way to start over these days is to use the Flash Tool Lite + use the latest officially released image, both are linked on the Edison’s official downloads page: https://software.intel.com/en-us/iot/hardware/edison/downloads

Leave a Reply