Ubuntu has a few cross compile toolchains available, for example:

sudo apt install gcc-arm-linux-gnueabi # for arm chips
sudo apt install gcc-arm-linux-gnueabihf # for arm chips with floating point registers

Crosstool-NG is a great help in getting the tougher cross compile toolchains built. I was targeting a specific ARM 926EJ-S chipset, and the vendor had their own toolchain.

Trying to cross compile on newer versions of ubuntu was a headache though. I would get “FATAL: kernel tool old” errors from the executable on the target system, and the autotools configure option to limit kernel version (–enable-kernel=…) did not fix it.

In the end, I was able to build zlib and openssl and libwebsockets statically, with a Crosstool-NG toolchain on an older ubuntu, but had to deal with this glibc bug by explicitly specifying the system lib folder, or getaddrinfo, gethostbyname, and all other NSS based functions just plain old failed (lost some hair to that fine feature – cmon RMS and Drepper, get along better so your code doesn’t stink…):

LD_LIBRARY_PATH=/lib ./my_static_app

Details as usual on the wiki. Onwards.

I dropped my Macbook Pro laptop on the concrete sidewalk on the short walk to work a couple weeks ago. I had popped the messenger bag shoulder strap up off my shoulder to pull my coat out, and didn’t quite catch it on the way down. Blammo. Turns out that when push comes to shove, concrete retains its shape a lot better than aluminum. All the USB ports on my Macbook Pro 5.2 were instantly transformed into trapezoids, as the corner crumpled up like a soft soda can.

Those Apple folks know what they’ve got going, and do a good job of treating people with no regard for money well. $600 later I had a lot of heartburn, but also had a 50% brand new MBP that worked perfectly. Too bad the 50% included the hard drive. 🙁

Anyway… long story short -too late-… my clean hard drive emboldened me to finally install all the OSes I needed. What does it take to get my four favorite ones squeezed onto one fat-assed macbook pro? A little more pain than should really be necessary. The moral of the story is that this is the stuff you play with when you don’t really care if you blow all your data away. No, really. Back up anything you care about first. Technical details start up after the break… (continued…)

A new article describing my cross-platform development environment setup is now on the wiki

Updated with more detail on 2011/09/18…

The latest reincarnation of Hang The DJ, my music player, is coming along nicely. In the alpha stage, it’s currently an excellent way to stream your massive music collection to your laptop.

It sits atop an open source media streamer called Ampache. I had to extend Ampache to support the more advanced features of Hang The DJ. But this extended version of Ampache still retains its full feature set.

I have plans for a full set of Hang The DJ mobile clients, but they are further down the roadmap.

In the meantime, I can still use Ampache with my iPhone in a couple different ways. There are some Ampache iPhone clients but they are rough and limited. However, Ampache by itself has a nice web interface. You can play your music by downloading, by streaming, or through a bare-bones flash player.

Flash is out on the iPhone. Downloading each song is cumbersome. But the streaming works! It’s not foolproof. The silly Safari browser on the iPhone has a ridiculously short timeout on streaming requests, something like 16 seconds, and I don’t know of any way to adjust it. So for a long time, it just didn’t seem to work for me. But following these rules, I can get to my whole music collection from my iPhone:

  • Make sure you have a decent server. I recently upgraded my server to use a quad core i7 cpu and it seems to help.
  • Make sure your upload bandwidth is sufficient, obviously. I have really crappy crappy “10Mbit” service from CenturyLink, which gives me about 20kbps upload. Hates it. But it’s currently my only option and it’s working.
  • Make sure your iPhone is in a 3G zone. Edge service through AT&T didn’t seem to work. Stupid AT&T.
  • Stream 1 song first. This is your best chance of completing the setup between Apache and Safari before timing out. Once that’s confirmed to work, slowly bump it up until you get timeouts. I can do 3-4 songs but 20 seems to fail consistently.

Yeah it’s not ideal. Just more motivation to get going on the iPhone client! 🙂

In the meantime, shoot me an email if you’re willing to try Hang The DJ out on a desktop or laptop, that would rock. Peace.

I have been fighting with MythTV, trying to get it to play my videos for over a month. I have played with my MythTV compilation settings, tried turning off OpenGL, changing the video profile to “Slim”, recompiling my ATI video drivers, and messing with my X configuration. I finally solved it by deleting the installation and reinstalling:

su -
rm /usr/lib64/libmyth*
rm /usr/bin/myth*
(reinstall mythtv)

This messy post brought to you by the iPhone’s Dragon NaturallySpeaking app thank you very much…