Tag Archives: fedora

ARMv7a hardware is like minefield

I have a bunch of ARMv7a boards at home. They are from different years, have misc CPUs and GPUs. All I think that some of them suck for some reasons.

Pandaboard was great board when got released. Then Texas Instruments fired everyone involved so now it is crap. Sure, mainline kernel works fine but no audio/video decoding in hardware, no OpenGLES due to PowerVR stuff which no one cares about because it is proprietary.

Wandboard Quad. Cool, fast, 2GB of memory, SATA. And hardcoded XGA (1024×768) resolution which can not be changed. Awesome? Not so much when you connect it to FullHD monitor. And forget about community — they are mostly stuck on 3.0 and 3.10 kernels based on Freescale code drops. I should dig deeper when looked at i.mx6 hardware ;(

Looks like it is time to check other boards. Minnowboard Max probably — x86 will fully open drivers.

Sound under Linux got broken for me

I am starting to dislike current situation of handling sound under Linux.

On my desktop I am using Fedora which is using PulseAudio to handle sound. And recently something changed cause I have to reach mute button too often.

Normally I have Deezer in Chrome playing some background music with volume in web app set to the highest value. I can use KDE mixer to control how loud it is and it works fine. When I run YouTube, Vimeo it is fine. Adobe Flash videos? Fine as well. And according to PulseAudio mixers it keeps stream value at same level every time.

But I do not like that browser. I use Firefox for most of my web stuff. But every time I play YouTube video it jumps with PA stream volume to the highest possible setting so even my next street neighbors are probably able to hear it. Sure, I can change YT volume to nearly zero but when will have to do it with all other web applications as well (and many of them do not have loudness control).

MPlayer (which I use for movies) plays nicely with volume – alters only own PA stream volume.

I think that it is a time for me to report bug against Firefox.

From a diary of AArch porter –- testsuites

More and more software come with testsuites. But not every distribution runs them for each package (nevermind is it Debian, Fedora or Ubuntu). Why it matters? Let me give example from yesterday: HDF 4.2.10.

There is a bug reported against libhdf with information that it built fine for Ubuntu. As I had issues with hdf in Fedora I decided to look and found even simpler patch than one I wrote. Tried it and got package built. But that’s all…

Running testsuite is easy: “make check”. But result was awesome:

!!! 31294 Error(s) were detected !!!

It does not look good, right? So yesterday I spent some time yesterday on searching for architecture related check and found main reason for so big amount of errors — unknown systems are treated as big endian… Simple switch there and from 31294 it dropped to just 278 ones.

Took me a while to find all 27 places where miscellaneous variations of “#if defined(__aarch64__)” were needed and finally got to point where “make check” simply worked as it should.

So if you port software do not assume it is fine once it builds. Run testsuite to be sure that it runs properly.

Firefox on AArch64 is working!

Few months ago I wrote about Xulrunner/AArch64 patches. Today I was able to make use result of them.

How to easily test? I went to YouTube and selected first suggested video (without logging in). Had to switch to HTML5 player and it worked fine:

Firefox 30 on AArch64

Second tab was build configuration page:

Firefox 30 - build configuration

And all that on Fedora/rawhide with windows X11 forwarded to my desktop. Nice!

AArch64 is in the house

Today FedEx courier delivered me a package. Inside was APM Mustang in 19″ rack case.

I unpacked, grabbed all required cables from my cable boxes (power, Ethernet, serial), connected it and booted. It arrived at very good moment as we are in a middle of Fedora 21 mass rebuild so I do not have to use remote machines anymore.

Will not write about technical details cause those are already known (8 cores, 16GB ram, SATA storage, 1GbE networking). Do not expect benchmarks as I am not allowed to publish results. If you want to compare build speed then go to Launchpad and check how long it takes to build Ubuntu packages for arm64 target.

My plans for machine? Run Fedora rawhide, fix building issues. I also plan to play with virtualization to check how Ubuntu and Debian work.

10 years ago I got write access to OpenEmbedded

It was 8th May of 2004 when I did first push to OpenEmbedded repository. It was BitKeeper at that time but if someone wants to look then commit can be seen in git.

I will not write about my OE history as there are several posts about it on my blog already:

It was nice to be there through all those years to see how it grows. From a tool used by bunch of open source lovers who wanted to build stuff for own toys/devices, to a tool used by more and more companies. First ones like OpenedHand, Vernier. Then SoC vendors started to appear: Atmel, Texas Instruments and more. New architectures were added. New rewrites, updates (tons of those).

Speaking of updates… According to statistics from Ohloh.net I am still in top 5 contributors in OpenEmbedded and Yocto project ;)

There were commercial devices on a market with OpenEmbedded derived distributions running on them. I wonder how many Palm Pre users knew that they can build extra packages with OE. And that work was not lost — LG Electronics uses WebOS on their current TV sets and switched whole development team to use OpenEmbedded.

Since 2006 we got annual meetings and this year we have two of them: European as usual and North America one for first time (there was one few years ago during ELC but I do not remember was it official).

There is OpenEmbedded e.V. which is non-profit organization to take care of OE finances and infrastructure. I was one step from being one of its founders but birth of my daughter was more important ;)

And of course there is the Yocto project. Born from OpenedHand’s Poky helped to bring order into OpenEmbedded. Layers (which were discussed since 2006 at least) were created and enforced so recipes are better organized than it was before. It also helped with visibility. Note that when I write OpenEmbedded I mean OpenEmbedded and Yocto project as they are connected.

I remember days when Montavista was seen as kind of competitor (“kind of” because they were big and expensive while we were just a bunch of guys). Then they moved to OpenEmbedded and dropped own tools. Other company with such switch was Denx. 3 years ago they released ELDK 5.0 which was OE based and made several releases since then.

What future will bring? No idea but it will be bright. And I will still be somewhere nearby.

USB Sucks Badly?

I bought new hub to use on my desk: 7 port USB 3.0 one with switchable ports. Connected to USB 3.0 port and problems started…

Base of my desktop is P67X-UD3-B3 mainboard from Gigabyte which I have chosen due to amount of USB ports on back (alternative was one of Z68 based mainboard which would give me HDMI/VGA/DVI ports for integrated graphics). But now it looks like it was not good choice.

I have those devices connected:

  • Microsoft Optical Mouse with Tilt Wheel
  • Microsoft Natural Ergonomic Keyboard 4000
  • Future Technology Devices International, Ltd FT232 USB-Serial
  • Logitech Webcam Pro 9000
  • NEC HighSpeed Hub integrated in my second monitor
  • Genesys Logic based 7-port USB 3.0 hub on my desk
  • Samsung ML-2160 Laser printer

But when I plug any of those USB 1.1 devices all I have is “Not enough bandwidth for new device state.” message from kernel. Faster devices are fine so I can connect pen drives, hard drives, phones or tablets. But forget about USB-Serial dongles or Yubikeys or BlueTooth…

Why’s that? Take a look at “lsusb -t” output:

/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 1: Dev 7, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
    |__ Port 1: Dev 28, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 29, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 3: Dev 62, If 0, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 2: Dev 54, If 0, Class=Printer, Driver=usblp, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 11, If 0, Class=Video, Driver=uvcvideo, 480M
            |__ Port 2: Dev 11, If 1, Class=Video, Driver=uvcvideo, 480M
            |__ Port 2: Dev 11, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 2: Dev 11, If 3, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 3: Dev 12, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
        |__ Port 5: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 6: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M

How many EHCI buses do you see? You may say two (as there are two ehci-pci entries) or you may say four (as there are four 480M buses). I would say that “not enough” is best answer.

I played with cables to move devices from 2nd bus to 1st one, moved printer from 3rd bus to 5th (which is two USB 3.0 connectors on top of computer’s case) and still not enough bandwidth for Yubikey or other USB 1.1 device. Note that all devices plugged into on-desk USB 3.0 hub lands on 3rd (1.1/2.0) or 4th (3.0) bus.

During next few days I will plug extra USB 2.0 controller to check will it improve situation after keyboard, mouse, monitor, webcam, ftdi move there.

UPDATE: turns out that USB 3.0 hub does not fully conform to specification. In the end I have added USB 2.0 hub (connected to 2.0 port) just for my USB 1.1 devices.