1. Unbricked my old SheevaPlug

    Few months ago one of my friends borrowed SheevaPlug from me. About two weeks later he gave it back — bricked… I did not had time to play with it so it landed on shelf.

    Yesterday I took it and decided to get it back to live. Requirements:

    • bricked SheevaPlug (v1.0 without SATA)
    • power cable
    • mini usb cable
    • usb thumb drive
    • OpenOCD (“apt-get install openocd”)
    • cross compiler (“apt-get install gcc-arm-linux-gnueabi” under Ubuntu)
    • U-Boot sources (HEAD of mainline)
    • Linux sources (also HEAD of mainline)
    • serial terminal (picocom, minicom, screen etc)
    • few terminals or terminal multiplexer (I used tmux)

    Then:

    • Connected power and mini usb cables to SheevaPlug. Desktop recognized usb-serial device as /dev/ttyUSB1.
    • Connected to it with serial terminal. Nothing appeared there of course ;)
    • Run OpenOCD: “cd /tmp/;sudo openocd -f /usr/share/openocd/scripts/board/sheevaplug.cfg -s /usr/share/openocd/scripts”. SheevaPlug was detected.
    • Connected to OpenOCD: “telnet localhost 4444”.
    • Built U-boot:
    export CROSS_COMPILE=arm-linux-gnueabi-
    make mrproper
    make sheevaplug_config
    make u-boot.kwb
    
    • Copied “u-boot” to “/tmp/uboot.elf” and used “reset;sheevaplug_init;load_image u-boot.elf;resume 0x00600000” — landed in U-Boot ;)
    • There is “sheevaplug_reflash_uboot” macro but it was not working for me. So I used U-Boot to flash itself:
    Marvell>> usb start
    Marvell>> fatload usb 0:1 0x0800000 u-boot.kwb
    Marvell>> nand erase 0x0 0xa0000
    Marvell>> nand write 0x0800000 0x0 0xa0000
    Marvell>> reset
    
    • Went to Ångström online image builder and built small busybox based image.
    • Unpacked tarball into /tmp/initfs, added /dev/ttyS0 node.
    • Built Linux kernel:
    export CROSS_COMPILE=arm-linux-gnueabi-
    make mrproper
    make kirkwood_config
    make menuconfig (set INITRAMFS_SOURCE to /dev/initfs)
    make uImage
    
    • Copied “arch/arm/boot/uImage” to USB thumb drive and inserted it into SheevaPlug.
    • Booted image:
    Marvell>> set ethaddr 'c0:ff:ee:c0:ff:ee'
    Marvell>> set bootargs 'console /dev/ttyS0,115200 rw'
    Marvell>> usb start;fatload usb 0:1 0x800000 /uImage;bootm 0x800000
    
    • Landed in nice and small Ångström distribution image ;)
    • Went to Ångström online image builder and built console image (task-base based).
    • Built Linux kernel (this time without initramfs):
    export CROSS_COMPILE=arm-linux-gnueabi-
    make menuconfig (unset INITRAMFS_SOURCE)
    make uImage
    
    • Copied “arch/arm/boot/uImage” to USB thumb drive and inserted it into SheevaPlug.
    • Prepare NAND for UBI:
    # mount none /dev -t devtmpfs
    # udhcpc eth0
    # opkg-cl update
    # opkg-cl install mtd-utils
    # ubiformat /dev/mtd2
    # ubiattach -p /dev/mtd2
    # ubimkvol /dev/ubi0 -N rootfs -s 490MiB
    # ubiupdatevol /dev/ubi0_0 /media/sda1/angstrom-task-base.ubifs
    # mount -t ubifs ubi0:rootfs /media/rootfs
    # chown -R root:root /media/rootfs
    # cp /media/sda1/uImage /media/rootfs/boot
    # sync
    # reboot
    
    • Another reconfiguration in U-Boot:
    Marvell>> bootargs 'console=ttyS0,115200 rw ubi.mtd=2 rootfstype=ubifs root=ubi:rootfs'
    Marvell>> bootcmd 'ubi part nand0,2; ubifsmount rootfs; ubifsload 0x800000 /boot/uImage;bootm 0x800000'
    Marvell>> mtdids 'nand0=orion_nand'
    Marvell>> set mtdparts 'mtdparts=orion_nand:512k(uboot),4m@1m(kernel),507m@5m(rootfs)'
    Marvell>> save
    Marvell>> reset
    

    And now my SheevaPlug is operational again. Boots from NAND with latest U-Boot and Linux. There is around 440MB free still on NAND (not counting 4MB partition where kernel was expected to be). I can put it back on shelf now.

    The only parts which I needed to compile were U-Boot and Linux kernel. I could skip bootloader and use binary image from Internet but prefer to know what my machines run (and building U-Boot is really easy). Initramfs support in Linux is real live saver as I did not had to play with initrd etc — just build image and boot it. The only problem was that devtmpfs was not auto mounted (even if option in kernel was selected).

    I could also use one of those “easy installers” made by PlugComputer community but I found such solutions more complicated (fetching binaries, finding requirements etc) than the one I used.

    Written by Marcin Juszkiewicz on
  2. ODROID-X developer board

    Day has started as usual. Looked at my Google+, Facebook and Twitter streams and noticed new toy: ODROID-X developer board from HardKernel.

    Is it interesting board? Yes, it is:

    • Quad core Exynos4412 CPU (ARM Cortex-A9)
    • 1GB ram
    • 6 x High speed USB2.0 Host port
    • 10/100Mbps Ethernet with RJ-45 LAN Jack
    • Audio codec with headphone jack and microphone jack
    • (micro)HDMI output with audio
    Open Exynos4 Quad Mobile Development Platform
    Open Exynos4 Quad Mobile Development Platform

    As usual some things to complain about:

    • 1.8V serial console with own connector (15USD for cable)
    • microHDMI connector when normal HDMI would fit
    • no Serial ATA (Exynos 4210 has controller, no docs for 4412)
    • 2GB ram would be lovely (Samsung Galaxy S3 has it in Korean version)

    Anyway looks like during month I will check does someone from friends wants to buy it and get one for myself. May be good replacement for Pandaboard and/or MX53 Quickstart.

    Written by Marcin Juszkiewicz on
  3. OpenEmbedded again

    When I moved to Canonical and Linaro I stopped using OpenEmbedded. But recently I got some tasks which involved it. In short: there is a plan to use OE to bootstrap ARMv8 support in some Linux distributions.

    2 years ago OE guys started creation of OpenEmbedded Core set of metadata. I have to admit that I never used it at that time but supported idea (first mentions of splitting recipes was at OEDEM 2006).

    This time using layers is the only way. So I fetched OE Core, OpenEmbedded and Linaro layers and did some builds to find out how it looks today. Some time later Ken Werner left Linaro team so I took over maintenance of meta-linaro layer. Improved documentation a bit and started creating small LAMP like image.

    There were issues with toolchain. I use Linaro branded GCC and found out issue with binutils and then with C++ headers — sent some patches and problems were solved by Khem Raj in a bit other way.

    After some tests and patches I got LAMP image working out of box. So moved to some more advanced things…

    First was update of qemuarmv7a machine to use Versatile Express emulation instead of hacked Versatile PB one. Ken did work for 3.2 kernel but in meantime Yocto moved to 3.4 one. I looked at issues and tried to get it working.

    OMG… Now I know why people say that OpenEmbedded have exponentially steep learning curve… Getting kernel into usable state is nightmare. Years ago defconfig was nearly sacred — there were few small changes done to it in kernel.bbclass/linux.inc but it was easy to understand. Now there are KERNEL_FEATURES which may be ignored, big set of scripts, config parts which may be applied (or removed or something else)… I really tried to understand it but my brain decided to go away.

    Maybe other day I will manage to understand this magic stuff or will just go for linux-yocto-custom.bb or will write old style linux_3.4.bb recipe without all that magic.

    Written by Marcin Juszkiewicz on
  4. Linaro Connect q2.12

    Another week of conference passed. This time I was at Linaro Connect q2.12 which took place in Hong Kong Gold Coast hotel.

    As usual everything started with packing. I have a list for it so it is usually quick job but you know — I was going to Hong Kong, world capital of cheap electronics so better have some space available just in case. So I borrowed bigger bag from friend, put some Linaro stickers on it (to be able to find it at baggage claim) and put all my stuff inside. Of course travel things went to backpack (have to buy more comfortable one).

    And then trip began… In short: car, bus, wait at airport, plane, wait at airport, plane, catch Rob Clark, taxi, hotel. Total time: 22 hours.

    Hotel was nice. View from room at “15th” floor (which was 12th due to 4, 13, 14 missing):

    View from hotel window
    View from hotel window

    Monday went with meeting people, sessions (scheduled and random ones) and some hacking. At end of day we had usual “meet & greet” dinner which was rather “seat & eat” style as we had it in room where we has lunch and there was not enough space to walk and discuss with people. For this I prefer UDS style where you have few points with food/drinks, lot of walking space and some tables here and there so you can grab something to eat and chat with many people during one evening.

    Speaking of food… It was great! Breakfasts offered wide choice of Chinese, Japanese, Singapore food with Western options available too (some sausages, boiled eggs, British beans). Add fruits, sweets and all what was there to make sandwiches… Lunches were even more mixed. Something local, something European, salads, sweets — all that made me a bit heavier on return trip :D

    Many people were surprised by lack of soda options as only coffee, tea and bottled water were available daily. For me it was not a problem as coffee + water were more than enough.

    But back to sessions. There were many ARMv8 (aarch64-gnu-linux) sessions. I attended one of them where we discussed about building cross compilers, bootstrapping distributions etc. As rest of ARMv8 ones this was not broadcasted or recorded. Rest of sessions used Google Hangouts for remote participation. It worked well even with last-minute changes from Google which terribly broke setup we used for earlier Connects. I was on session where leader (Wookey) was remotely so we had “big brother is watching you” effect:

    Big Wookey is watching you
    Big Wookey is watching you

    Have to admit that this method of remote participation helps as users can just ask questions instead of relying on someone following IRC channel. But it is also limited to who can join so no use for conferences like UDS.

    For me interesting sessions were ones around CI process. We have few such systems and each has different use. There is LAVA which gives us ARM boards to run tests on, Jenkins to run builds on x86 instances (Amazon EC2 like). Toolchain Working Group has “cbuild” which they use to build and test toolchain on x86 and ARM machines. And then there is also Launchpad which has daily builds from selected Bazaar branches. We had discussions about merging them and/or sharing resources (like a way to borrow ARM boards from LAVA to run cbuild). Hope that we will get something interesting from it.

    But sessions are not the only thing to do. There are also after work activities. We got coaches available on Tue/Wed/Thu to Tsim Sha Tsui (TST in short) district, The Peak (Tue only due to cloudy weather) and somewhere else. I went to TST on Tuesday and we just walked around it, got some food (chopsticks only so we decided to not ask for cutlery and handle it — we managed) and for fun visited one of those shops with “TAX FREE” signs (which in tourist language means “YOU DO NOT WANT TO BUY HERE”).

    On next day I went with Zygmunt Krynicki to Golden Computer Shopping Center near the Sham Shui Po station. Lot of computer shops compressed in small area. Everything from SSDs, mainboards etc to normal and weird cables. In one shop I asked for 0.5m long HDMI cables and got them so expect soon post about adding HDMI switcher to my devboards setup. Decided to not spend money on anything more expensive as there is no warranty that it will work and I do not want to ship hardware back to Hong Kong when it fail.

    Thursday we want for team dinner. But before we decided to take a ferry from Avenue of Stars to Hong Kong Island and go for ice cream there:

    Ice cream selection at "I Scream" place
    Ice cream selection at “I Scream” place

    I went for ginger and green tea flavours as both sounded crazy enough and I am sure that will not find them here in Poland. Ginger one was great (even if I do not like ginger) but green tea one was awful — tasted like concentrate of concentrated tea.

    Hong Kong Island skyline
    Hong Kong Island skyline
    Me and Alexandros at Avenue of Stars
    Me and Alexandros at Avenue of Stars

    Then we went to “Spring Deer” restaurant. Crowdy, long queue (even with earlier registration). As usual in Hong Kong I had to watch my head in few places. When we got table it looked like disaster but got cleaned quickly and were served with food.

    For start they give us some oiled peanuts so we had interesting challenge as a way of practising eating with chopsticks. We ordered some pork, fish, vegetables and duck.

    Vegetables - no idea which
    Vegetables - no idea which
    Pork or fish
    Pork or fish
    Pekin duck
    Pekin duck
    Lotus seeds
    Lotus seeds
    Bananas
    Bananas

    After dinner we were able only to grab taxis and go back hotel ;)

    Friday was my last day there. During packing bag I realized that this is my first conference when do not have any extra hardware (cables do not count). But I hope that sooner or later I will put hands on some kind of ARM server hardware (maybe one node Calxeda board which I heard rumours about). As there were nearly no sessions I went to one of hacking rooms for coding and got my patches reviewed by Matthias Klose — have to work on few of them, some were described as “have to merge as look ok”.

    After lunch we had usual “Demo Friday” where people presented work of miscellaneous Linaro (but not only) teams. One of interesting ones was comparison of ASOP build of Android 4.0.4 contra Linaro build which was present on two same Pandaboards. Both were running 0xbench and results were cleanly visible. Changes are in review and on a way to ASOP tree (due to usual “Upstream, upstream, upstream” philosophy of Linaro).

    Day ended with dinner in Chinese style. Food was good and interesting — especially when we were trying to find out what menu entries mean ;) There was a show of Chinese “Bian lian” art with a guy changing his masks. I was wondering for a moment how we did that but did not bother with it too much.

    20:15 was bus to airport. Then usual stuff: wait on airport, plane, wait on airport, plane, wait on airport, bus, car, home. This time 26 hours. Saturday evening was a bit hard but with a help of melatonin I managed to get rid of it with 8h sleep. So this is first trip without jet lag problems.

    Written by Marcin Juszkiewicz on
  5. New hard drive

    During UDS-Q I bought 3TB Seagate disk in USB 3.0 enclosure. Today I finally connected it to my desktop, formatted as ext4 and mounted.

    I am surprised by speed of USB 3.0 - 147MB/s according to hdparm test is more than rest of my hard drives have. If technology will increase that way my SSD may became obsolete at time when another hdd will join my setup.

    What for 2.73TB drive someone may ask. I plan to use it for backup of my machines.

    Written by Marcin Juszkiewicz on
  6. Tizen: first impressions

    During my stay in Oakland, CA (due to Ubuntu Developer Summit) I decided to attend also Tizen Developers Conference. Not that I have any relations with this platform — just wanted to meet some friends from Maemo times. And I did not had plans for Tuesday evening while Tizen visitors had social event planned in The California Academy of Sciences.

    For those which do not know what Tizen is a bit of history. Years ago Nokia made few internet tablet devices (770, n800, n810) and phone (n900) which were running Linux distribution named Maemo. It was loosely based on Debian. In meantime Intel created Moblin which was their distribution for mobile devices. Few years passed and they joined forces and MeeGo was born. Nokia released N9 phone with it, ASUS had netbook running MeeGo and maybe few other devices appeared on market. Then history repeated: MeeGo merged with LiMo and they created Tizen project.

    It is hard to tell was conference success or not because I did not attended any sessions there — just opening keynote by Jim Zemlin. On first day I also came for technical showcase and partner demos. But they were squeezed in very small room so it was hard to discuss with people showing their work. Maybe next time organizers will give at least 4m² per demo — this should be a minimum.

    But today I got Tizen Developer Platform device and thumbdrive with SDK on it. So decided to play a bit with it. It was not enjoyable experience.

    First ugly part was Tizen SDK “so-called” installer. 823MB shell script… I thought that those times passed long time ago. Anyway tried to run it. All I got was message that 64bits systems are not supported. Good to know that, but my x86-64 systems are able to run x86 binaries without problems. Ok, I made workaround and then got message about missing qemu, rpm, libsdl packages. No, I will not install rpm on my Ubuntu systems.

    So I decided to cut that crappy shell script and take a look at tarball. Fast “tail -n+122 tizen-sdk-0423.bin >tizen-sdk.tar.gz” and I was able to extract SDK. Got 26 zip archives.

    One of them contains rootfs created from packages based on Debian/Ubuntu packages. Some are from times when dinosaurs ruled the Earth (debianutils 2.17 was released in 2006), some are more fresh (like gcc-4.5 based on version from May 2011). In other words tradition started by Maemo is continued in Tizen and developers are given mix of fresh tools with long time forgotten ones. And Scratchbox 2.

    To connect with device there is “sdb” tool. It introduces itself as “Smart Development Bridge” but in past it was named “Samsung Development Bridge” (run ‘strings’ on binary). And it’s father has a name “Android Development Bridge” and has some more options.

    Anyway if you want to connect to device then few steps are required:

    1. On device go to settings and set USB to ‘USB debugging’ mode. This will switch it into cdc_ether gadget.
    2. On host do “sudo ifconfig usb0 192.168.129.1” to configure networking.
    3. Connect to device: “ssh root@192.168.129.3”

    And then you can enjoy system which is a mixture of few Debian/Ubuntu versions. And forget about updates — unless you know how to get to 165.213.180.233 and know password of “kb0929.kim” user there (taken from /etc/apt/sources.list file).

    Device uses Linux 2.6.36 kernel with unknown patches on top including CMA and Android ones. Quite old one but works. Hope to get newer one from someone.

    What I do not like is availability of sources. There is review.tizen.org website with git repositories but I want to vomit when I see commits like “let’s add 2.6.36 kernel in one commit”. Lovely lack of ideas how to help developers.

    What I will do with device? Not decided yet. Waiting for instructions how to get into bootloader to boot own kernels. Then who knows… replacing Tizen with Android or Ubuntu?

    Written by Marcin Juszkiewicz on
  7. UDS-Q

    Another May, another Ubuntu Developers Summit. This time I am in Oakland, California, USA (even if my tweets shows Dallas, Texas as geolocation).

    As usual with US trips this one took insane amount of time. But I was 3cm from not going here… Why? Because I got stuck in toilet at home. Hopefully with help from neighbour I was able to bash door out and get to the bus stop on time.

    Then standard set of bus, plane, plane, train and finally arrived in hotel. As my room was not yet ready I got 30$ coupon to bar to not waste time on waiting. Free meal/beer ;)

    My room is at 17th floor (which means 15th) and has a nice view in the evening:

    Evening view at a street from 17th floor
    Evening view at a street from 17th floor

    On Sunday I went to see San Francisco centre (I saw Golden Gate on earlier visit). Chinatown was interesting experience. Lot of people speaking language which I do not understand, shops full of food which I do not recognize.

    Some random photos:

    Me on some square
    Me on some square
    Fountain
    Fountain
    Steep street
    Steep street
    A church
    A church

    After getting some souvenirs and refilling of my US T-Mobile sim card I decided to go to the cinema for ‘The Avengers’ movie. It was nice experience. Touchscreen operated ticket machines which allow to buy ticket in one minute (but people were standing in long queue to buy tickets in ‘normal way’) made it even better. As in Poland there was big amount of commercials before movie (including some in style “our Army/Navy is great, why not join us”) but what I liked was just-before-movie animation reminding about not talking/texting/tweeting during movie (made with characters from “Madagaskar” series). Have to admit that RealD 3D glasses were more comfortable than Dolby 3D ones used by Polish cinemas. Movie itself was great but I think that will have to see it in Poland due to my English ;D

    During evening there was usual Canonical internal plenary and then dinner. I even managed to sleep 6 hours despite jet lag ;D

    Monday started with interesting keynote and presentation of Calxeda ARM server using technology they were talking about at previous UDS.

    Calxeda ARM server
    Calxeda ARM server

    It is 2U case with 24 Serial-ATA discs and 12 nodes with 4 quad-core EnergyCore processors per node. The only cables inside are power ones as rest of connections is on pcb. Connection with world by four Ethernet connectors.

    I went to “Create filesystems for embedded devices” session where we discussed how to make Ubuntu Core even smaller. People mentioned OpenEmbedded, OpenWRT, buildroot as usual, we got some strange use cases too. What will come from it? Time will show.

    Plenaries were interesting. First Chris Kenyon told about cooperation with OEMs and ODMs and how it relates with Ubuntu. Laptop in a pizza box picture was nice — reminded developer boards. Then Bdale Garbee from HP shown us that there is no way to go though life without being served by HP technologies or hardware. Both talks were great and I hope that rest of plenaries will be like that.

    After plenaries I went to San Francisco to register at Tizen conference and to meet some friends from Maemo times. Technical showcase and partner demos were boring and it was hard to feel that it is something innovative. But who knows… maybe Tizen will be yet another phone/tablet/ivi/etc OS even when Moblin, Maemo, MeeGo did not succeed.

    During evening (back at UDS) there was ‘Meet & greet” social event. Our Linaro group (Amber, Ricardo, Paul, me) was showing member boards and replying to misc questions from audience.

    What next? Sessions, social events, discussions about my patches with other developers, some sight-seeing.

    Written by Marcin Juszkiewicz on
  8. Thanks to Kindle I am back to reading

    I always loved to read. In 6th class in elementary school I took fourteen books from school library at once (when only 3 were allowed). In 8th class I was going there only for required readings as there were no books there which could interest me (tough timing as I read all what liked and no money for new ones).

    Basically during my school life I used several libraries and at most of them has a status of ‘frequent visitor’ which meant no need to say name during books exchange. Also booking of rare books was possible.

    After studies I moved to other city then to another then to another… My amount of books was slowly growing because I wanted not to have too many things. Interesting new books were also usually expensive so compared to my income was not helping. And I somehow skipped searching for new libraries — instead were checking friends’ bookshelves.

    Once I settled down in Poznań and then in Szczecin my collection was slowly growing. And then, in November 2011 I bought myself Kindle Classic. Life got changed…

    First I loaded it with some documents and books which I had on hard drive — technical, science fiction etc. Reading was pleasure. Then I loaded more and more…

    Recently I started making use of promotions announced on “Świat Czytników” website which resulted in more and more books in queue. Then evenings, travels, waiting in queues transformed into reading spaces ;)

    It is good to read a lot again.

    Written by Marcin Juszkiewicz on
Page 41 / 106