FP2: Compiling a blob-free variant of Fairphone OS

Did someone actually try flashing/booting the blobfree build? Which devices work, which don’t?

Can’t we upload it anyway? I have the blob-free images. I’m sure someone will test it :slightly_smiling:

I assume that a lot of things will not work. There are around 477 libs in the tar ball. Eight of those include the term “adreno” that’s the name of QC’s graphics chip … And over 30 .bin/.fw files. And around 70 config files … I’m sure I missed a lot of other important file types.

I hate to say it, but copying Sony is the way to go. :frowning:

But keep in mind only the few libs mentioned above are really tricky (gps, audio, radio, fitness stuff), the rest just gets copied anyway.

1 Like

I think most of the stuff that needs to be modified could be found here:

/kernel/arch/arm/boot/dts/ (dts for the chip, maybe already in the main kernel)

The qualcomm bin blob make files, I guess, can be found here:
cat device/qcom/*/*.mk

#FM
FM := qcom.fmradio
FM += libqcomfm_jni

#GPS
GPS_HARDWARE := gps.conf
GPS_HARDWARE += gps.default
GPS_HARDWARE += gps.mahimahi
GPS_HARDWARE += libloc_adapter
GPS_HARDWARE += libgps.utils
GPS_HARDWARE += libloc_eng
GPS_HARDWARE += libloc_api_v02

#ANT stack
PRODUCT_PACKAGES += \
    AntHalService \
    libantradio \
    antradio_app


#LIBCOPYBIT
LIBCOPYBIT := copybit.msm8660
LIBCOPYBIT += copybit.msm8960
LIBCOPYBIT += copybit.msm8974
LIBCOPYBIT += copybit.msm8226
LIBCOPYBIT += copybit.msm8610
LIBCOPYBIT += copybit.apq8084

Was there any effort since February?

1 Like

I tried to compile without blobs and got this:

$ make -j4
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed
make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1
make: *** Waiting for unfinished jobs....

#### make failed to build some targets (03:42 (mm:ss)) ####

Could you build it correctly on a clean repo sync without blobs infection, @fp1_wo_sw_updates?

The desirable would be a blob-free flashable ZIP, to which add blobs from a running device with a neat script. B2G does exactly this (through a web interface that I think wouldn’t be hard to adapt), so it should be possible!

1 Like

Hey, I haven’t tried yet ;(

If I remember correctly the blob libs are linked during the build. But I guess is possible to use the standard much slower Android based ones. It would be interesting if one could diff the Mozilla build script with the one FP provides. Or just ask the Mozilla coders :wink:

Reading about clang makes me a bit suspicious. I’m not sure if Android 5 already uses clang. Maybe something is using your systems linker and not the one provided with the code?

Yup, Lollipop+ use it, and the issue seems to be something about host clang, acording to CM’s gerrit. Trying to workaround this by WITHOUT_HOST_CLANG=true make systemimage -j4 doesn’t work for FPoOS. I’ll have to learn how to setup well my host clang then, :confounded:

Okay, was just a guess! I don’t remember anymore, but accidentally mixing provided tools and compiler stuff from the host could look like this. Maybe you can use a verbose make to see all the tool paths during the build? I would try to avoid using tools from the host as much as possible.

1 Like

I’m having the same exact linking error with clean msm8974 codeaurora sources, so it’s not FPoOS exclusive. I read it’s caused by updates libraries, probably because I try to compile in Ubuntu 16.04 and not on 14.04. I’m applying the ld.gold workaround stated in this StackOverflow question and trying to build again.

Edit: I was sick of odd errors, so I setted up a chroot environment with Ubuntu 14.04 and build seems to be doing fine. I firstly tried with Vagrant, but my machine is not powerful enought to use VMs for compiling things, only capable on bare metal, so this is a great solution for me (and not as complicated as I thought I’d be)

3 Likes

I successfuly compiled FP Open OS without blobs, as @keesj said, with the Ubuntu 14.04 chroot environment. I didn’t try to boot it yet, but…

…I have hope. Before FPoOS, I compiled general CodeAurora sources for msm8974 and flashed system.img (boot.img didn’t work). Booting the system, ADB showed me a message about a specific missing required blob (lib*.so). Thus, I think, adding the blobs locally (with some fancy script/WebExtension) happily will result in a working system, as B2G is! :wink:

Also, I’ll investigate how to make flashable ZIPs without images inside (with the same content unzipped, like custom ROM’s ZIPs)

I will keep you informed, :slight_smile:

6 Likes

Great news, keep up your work :). Hope you’ll get some official support if you have problems you can’t solve for yourself.

1 Like

Boo. Copying previously-extracted blobs from this list of blobs to the system (once flashed, from TWRP’s File Manager) result in a system somewhat booting, but not so well: there’s no graphical output, adb does not respond and my laptop detect a bunch of raw partitions mounted from the device. Those partitions correspond to boot, recovery, system, userdata and internal storage (a guess from each partition content, capacity and UUID relationship).

I’m tired right now so I’ll quickly summarize what I did next (two firsts are pretty much this things):

  1. I managed to convert the own-built system.img and the FP-built system.img with Android’s simg2img tool to normal imgs, and
  2. mounted them in my laptop with sudo mount -t ext4 -o loop system.raw.img /mnt/<mount-point>
  3. I extracted a list of files to diff with find /mnt/<mount-point>/ | sed 's/mnt\/<mount-point>\///g' | tee system.list.txt
  4. Did a graphical diff with Meld: there are lot of diffs, not only *.so blobs, that can cause a faulty system.

Need to investigate this further and its correlation with the other non-*.so blobs of the official blobs ZIP.

Complete list of own-built without-blobs system.img files

Complete list of official system.img files

Good night.

3 Likes

Just a little non-update: kindly hosted by AndroidFileHost…

  • here are the image files for FP Open OS 16.06 without blobs,
  • and here the image files for AOSP-CAF 5.1 without blobs.
2 Likes