Paul Kocialkowski's coding blog

Free software, programming and stuff

Missing proprietary firmwares in Android systems

Written by Paul Kocialkowski - - 63 comments

Firmwares are programs that do not run on the main processor of a computer: instead, they runs inside separate chips that have a dedicated functionality. Most of the time, firmwares are proprietary programs, which do not respect the user's freedom. When they are not already installed in the chip they run in, the main processor has to load them into the chip, which requires the firmware to be distributed as a file. Since they are proprietary software, I think firmwares shouldn't be shipped with any operating system, not should any operating system ever advise the user to install them.

However, people sometimes need a functionality that depends on proprietary firmwares so bad that they would rather use a system that ships and encourages the use of proprietary software, including the needed firmware, over a free system. In that case, it is better for their freedom that they use a free system with only the proprietary firmware installed, over another system that contains dozens of other proprietary pieces, including ones that also run on the main processor and are able to compromise the whole system (from a security point of view), on top of not respecting the user's freedom.

On Android devices, people are often facing this choice and look around for instructions on how to install only the missing firmwares so that they can avoid installing a system that contains even more proprietary bits. While these instructions cannot be released on free system's official documentation pages, for the sake of not encouraging the use of proprietary software, it makes sense for me to publish such instructions on my personal pages. I have written scripts that extract the firmwares from CyanogenMod installation zips for a few Android devices and push them to the device: cm-firmwares.git

The procedure to install the firmwares is the following:

  • Grab the CyanogenMod installation zip matching the needed version from the CyanogenMod Downloads website (make sure to select the stable release).
    For instance, the CyanogenMod 10.1.3 installation zip for the Galaxy S 3 (I9300) is at: https://download.cyanogenmod.org/?device=i9300&type=stable.
  • Clone the cm-firmwares git repository, with the branch matching the CyanogenMod version.
    For instance, for CyanogenMod 10.1.3:
    git clone git://git.paulk.fr/cm-firmwares.git -b cm-10.1.3
  • Connect the device via USB, make sure ADB is enabled and allowed to run as root on the device. Check that the device is connected and allowed:
    adb devices
    If not, it might be necessary to run the process as root (or prefix the following commands with sudo).
  • Run the script (on the host computer) with the device codename as first argument.
    For instance, for the Galaxy S 3 (I9300):
    ./cm-firmwares.sh i9300
  • Alternatively, it is possible to create a zip containing the firmwares and install it afterwards, using recovery.
    For instance, for the Galaxy S 3 (I9300):
    ./cm-firmwares.sh i9300 zip

If you wish to push only certain firmwares, feel free to edit the text file matching the device codename to remove the ones that are not needed before running the script.

63 comments

#1 Flint Stone said :

Thank you very much for that eplanation! I think it provides the second best option to free an android device, where the best one is not available.

As I understand these instructions, Replicant has to be installed beforhand on the device?

If there is CM installed (without gapps, with fdroid only), would it be sufficient to just install Replicant without wiping data?

If no, could I save the existing settingsof the various apps from CM to Replicant by installing the latter with omitting the wipe?

#2 Eric Fontaine said :

Thanks!!! I am very grateful for putting this up. It is a unfortunate tradeoff, but I am much happier using Replicant 4.2 on my Galaxy Nexus with proprietary wifi & bluetooth than using CM 11 nightlies with so many proprietary components out of my control as I was using yesterday.

#3 Conrad said :

Thank you very much for this handy script!
Of course I would rather not like to depend on these proprietary parts but for me wifi is the only reason for owning a smart phone at all so I tried your script with my Samsung Galaxy S2 and its newly flashed replicant. It worked like charm!

#4 Paul Kocialkowski said :

@Flint Stone :
> As I understand these instructions, Replicant has to be installed beforhand on the device?
This script is not particularly affiliated with Replicant, it targets CyanogenMod-based systems that don't ship with the proprietary firmwares ;)

> If there is CM installed (without gapps, with fdroid only), would it be sufficient to just install Replicant without wiping data?
That's generally a bad idea, it'll probably fail.

> If no, could I save the existing settingsof the various apps from CM to Replicant by installing the latter with omitting the wipe?
You have to wipe data anyways, but you can back up the apps data beforehand.

#5 dllud said :

Hi Paul,

Thanks a bunch for the script. It is going to spare me some time.

There is some problem with your git repository, all links tell me it is empty. (I had to copy the scripts from the web interface.)

> git clone http://git.paulk.fr/cm-firmwares.git
Cloning into 'cm-firmwares'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done

> git clone git://git.paulk.fr/cm-firmwares.git
Cloning into 'cm-firmwares'...
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 22 (delta 9), reused 0 (delta 0)
Receiving objects: 100% (22/22), 2.30 KiB | 0 bytes/s, done.
Resolving deltas: 100% (9/9), done.
Checking connectivity... done
warning: remote HEAD refers to nonexistent ref, unable to checkout.

The 3rd link git@git.paulk.fr:cm-firmwares.git gets stuck on "Cloning into 'cm-firmwares'...".

#6 Paul Kocialkowski said :

@dllud : You need to specify which branch to clone (-b option of git). Depending on which version you want to extract the firmware from, that would be cm-9.1.0 or cm-10.1.3.

#7 Anders said :

Thanks for directing me here. I have given adb full privilegies, am running "sudo ./cm-firmwares.sh n7100" while in the proper directory but receives "Read-only file system" (see below sample):

"...
Extracting /vendor/firmware/fimc_is_fw.bin
Extracting /vendor/firmware/setfile.bin
remount failed: Operation not permitted
Pushing /vendor/firmware/bcm4334.hcd
failed to copy 'n7100/bcm4334.hcd' to '/vendor/firmware/bcm4334.hcd': Read-only file system
Pushing /vendor/firmware/bcm4334_murata.hcd
...
"
Any clue on what to do to enable the installation is much welcome!

#8 Paul Kocialkowski said :

@Anders : You probably forgot to run adb root. If you don't do it, adb doesn't run with sufficient privileges to remount /system rw.

#9 Anders said :

Thanks Paul,

this solved the problem.

Keep up the good work with Replicant!

/Anders

#10 Julien M said :

Thanks a lot for the work on the Replicant project and for this script that helped me become a happy Replicant user.

#11 dllud said :

Hi Paul,

I finally had the chance to test the script. It worked great on a i9100. WiFi is now working. Thanks!

Why don't you also add the proprietary GPS drivers? The files for the i9100 are:
/system/lib/hw/gps.exynos4.so /system/lib/hw/gps.exynos4.so
/system/lib/libsecril-client.so /system/lib/libsecril-client.so

(from http://blog.josefsson.org/2014/02/27/replicant-4-2-on-samsung-s3/ )

#12 Greg Moreland said :

Well done Paul!!

this worked great for me also, it will keep my phone as free as it can be till we get open source for these chips or the phones become more open.

I'm really pleased with how Replicant runs on my Galaxy S2.

Thanks Heaps,
Greg.

#13 Paul Kocialkowski said :

@dllud : This script is not intended to include proprietary drivers in any free system. It is about firmwares, which are a fairly different topic. Please make sure to read the introduction text, which gives a bit of context. Including proprietary user-space programs to have hardware features working doesn't match my personal set of requirements regarding freedom. I understand that it may not be your case, though I'm not going to work on having support for proprietary user-space software.

#14 dllud said :

@Paul Kocialkowski I see. Got the difference. Thanks for the explanation.

As we are into it. Just in case anyone is in a real need of a complete EGL implementation, for instance for an application complaining about missing OpenGL ES (GLES) support, the PROPRIETARY USER-SPACE files you have to pick out from CM are:
/system/lib/egl/egl.cfg
/system/lib/egl/libEGL_mali.so
/system/lib/egl/libGLESv1_CM_mali.so
/system/lib/egl/libGLESv2_mali.so
/system/lib/hw/gralloc.exynos4.so
/system/lib/libMali.so
/system/lib/libUMP.so

This is for the i9100, for other smartphone models the files in /system/lib/hw may be different.

Before copying these proprietary files take some time and search for a replacement app. There is usually some which does not need full EGL support and thus doesn't require you to sacrifice your freedom. For instance, instead of Firefox you can stick with the stock browser and if Document Viewer crashes you can use VuDroid.

#15 Paul Kocialkowski said :

@dllud : At this point, you might want to just install CyanogenMod/Omni. If you're ready to compromise this much, Replicant is probably not for you.
I do not wish to censor your comment to remove the mini-howto, but I do not approve nor recommend installing these proprietary files.

#16 saman said :

Thank you Paul for all the good stuff and keep up the good work.
I got wireless and BT working with your script and i9100.txt config file.
I had to do the following to get it working,
- install cwm and replicant-4.2-i9100, wipe user data and cache partition and reboot my i9100.
- enable usb debugging and allow root for adb on my i9100
- adb kill-server
- adb root
- edit i9100.txt and change the entries from
/vendor/firmware/...
to
/system/vendor/firmware/...
- run "./cm-firmwares.sh i9100"

thanks again

#17 Simon Josefsson said :

Hi. I can't get wifi to work on a S3 running replicant. I see wireless networks, but connecting fails and I see CTRL-EVENT-ASSOC-REJECT's in the log (but PSK2 password is correct). Haven't tried WPA or unencrypted wifi. Any ideas? Has anyone had success with wifi on a S3?

/Simon

#18 Paul Kocialkowski said :

@Simon Josefsson : I suppose it's not up to the changes we introduced with Replicant at this point. Check if it works in CyanogenMod (it probably doesn't) and report the error to them.

#19 Eric Worden said :

This didn't quite work for me but I fixed my problem. I have Replicant 4.2 on Galaxy Nexus. The wifi slider switch was dimmed and the screen would say "turning wifi on" but would never complete. By examing the dmesg log I found that the system was looking for file bcmdhd.cal in /system/vendor/firmware however in Cyanogenmod that file is found in /system/etc/wifi. I copied it to the firmware directory -- fixed.

#20 Paul Kocialkowski said :

@Eric Worden: The script is supposed to take care of that for you, so that you don't have to deal with the paths manually at all!

#21 Michael said :

Hi Paul,
Thanks for posting this guide on how to install proprietary firmware on my Replicant running SGS!
Problem is, that I'm new to programming and all that stuff and I don't have any computer running Linux... So your script is not applicable for me :(, right? Could you tell me, how to change the things, to keep it running on windows anyway?
I already tried extracting the files from cm-10.2.1 and installing them via a zip by myself, but my Galaxy S always shows
"Installing update...
E: Error in /sdcard/update.zip
(Status 6)
Installation aborted"
One of the problems with the zip is, that I don't know what to write as arguments after the mount command and where to find these information on my device.

It would be so great to receive help from the pros :).
Michael

#22 rm said :

I'm having some problems with using the script mentioned above. I have adb installed, and have the correct cyanogen archive, cm-10.1.3-i9100.zip. When I run the script, with:
$ ./cm-firmwares.sh i9100
a series of files are "pushed" to my galaxy s2, and copied to /system/vendor/firmware/
However, the wifi will not turn on. I've rebooted the phone, still nothing. I am using replicant 4.2
After running the script, the contents of /system/vendor/firmware are:
-rw-rw-rw- root root 54333 2014-09-09 23:37 bcm4330B1.hcd
-rw-rw-rw- root root 54333 2014-09-09 23:37 bcm4330B1_murata.hcd
-rw-rw-rw- root root 54333 2014-09-09 23:37 bcm4330B1_semcosh.hcd
-rw-rw-rw- root root 1781 2014-09-09 23:37 bcmdhd.cal
-rw-rw-rw- root root 184864 2014-09-09 23:37 bcmdhd_apsta.bin
-rw-rw-rw- root root 204783 2014-09-09 23:37 bcmdhd_mfg.bin
-rw-rw-rw- root root 222310 2014-09-09 23:37 bcmdhd_p2p.bin
-rw-rw-rw- root root 222310 2014-09-09 23:37 bcmdhd_sta.bin
-rw-rw-rw- root root 1496 2014-09-09 23:37 nvram_mfg.txt
-rw-rw-rw- root root 1752 2014-09-09 23:37 nvram_mfg.txt_murata
-rw-rw-rw- root root 1806 2014-09-09 23:37 nvram_net.txt
-rw-rw-rw- root root 1751 2014-09-09 23:37 nvram_net.txt_murata

Could anyone suggest what has gone wrong? Is there anything i can check for in dmesg, or any other logs?

Thanks

rm

#23 Paul Kocialkowski said :

@Michael : The script requires a shell to be executed, which is different from the Linux kernel. I see no point in supporting Windows: Replicant is about freedom, so it is natural that it relies on other free software for its installation.

#24 Paul Kocialkowski said :

@rm : This is odd, these files should be sufficient to have it working. Maybe dmesg and the main logcat buffer would help figure it out.

#25 Kay said :

Hi Paul, thank you for your work, the replicant project and this tutorial. Everything works perfect, only some problems occured during tooling installation on mac os.

#26 Bruno Dantas said :

I cloned the 10.1.3 branch of cm-firmwares and downloaded the corresponding CM archive for my device, which is cm-10.1.3-p5110.zip. I noticed that the files listed in
cm-firmwares/p5100.txt do not match the contents of
/system/vendor/firmware in the zip file (screenshot here: http://tinyurl.com/najwg7r). Before running the script, should I edit the p5100.txt file so it matches the contents of the /system/vendor/firmware? I want to get this right--the tablet without wifi would be useless to me.

#27 Paul Kocialkowski said :

@Bruno Dantas : That's normal, the files simply are not at the same location in CyanogenMod and Replicant. Replicant has them all under /system/vendor/firmware, which is the location indicated in the file. The script will still figure out the location of the files in the CyanogenMod zip. I have tested the script on each device, so if you provide the correct archive, things are supposed to work!

#28 Bruno Dantas said :

Thank you very much for the clarification. So I went ahead and tried the script without alteration and it worked like a charm--wifi and vpn are both working now. (Pity that at this point we still need proprietary software to get the wifi working. I hope I can replace it with free software someday.)

#29 the other PaulK said :

I don't get it. I'm just too newb to this. I need each and every little step that is involved here. My progress so far:

1. "Start by cloning the git repository: cm-firmwares.git (the branch matches the CyanogenMod release version),"

I'm pretty sure I did this. I have the files in a folder on my linux machine. I have transferred them to my android device.

2. "connect the device via USB"

yes. "adb devices" tells me the device is connected

3. "make sure ADB is enabled, allowed and runs as root."

Is this on my computer or my android device? I opened Terminal emulator on my android and tried "adb root" and the cursor goes to the beginning of the next line. Is this all that is supposed to happen? What are the steps here please?

4. "Then, bring the CyanogenMod installation zip in the cm-firmwares directory and use the script as follows, for instance for the Galaxy S 3 I9300 (i9300).
./cm-firmwares.sh i9300"

Sorry. This is just too cryptic for me. How do I "bring the CyanogenMod installation zip in the cm-firmwares directory" I didn't get a zip file, just the cm-firmwares.sh file. And when I run...
./cm-firmwares.sh p5100

...am I running it from the computer or from Terminal Emulator on Android? How do I do that?

I hope some of you can understand my frustration. I know absolutely no one personally who does any of this. And I only have so much time I can give to scouring the internet for solutions. Thanks for your help.

Thanks to Paul K for doing Replicant. My wife thinks I'm crazy to bother with this stuff, but I'd rather have Replicant than her beautiful new iPhone 6 with iOS. I'll take the free software with just enough firmware to give me wifi and bluetooth.

Cheers,
the other PaulK

#30 Paul Kocialkowski said :

@the other PaulK:
> I have transferred them to my android device.
Nowhere is it said to do that…

> Is this on my computer or my android device? I opened Terminal emulator on my android and tried "adb root" and the cursor goes to the beginning of the next line. Is this all that is supposed to happen? What are the steps here please?

You need ADB running as root on the device (but IIRC the script does it automatically). You can refer to: http://redmine.replicant.us/projects/replicant/wiki/adb for instructions on how to get root.

> Sorry. This is just too cryptic for me. How do I "bring the CyanogenMod installation zip in the cm-firmwares directory" I didn't get a zip file, just the cm-firmwares.sh file.

Of course, I don't distribute that! You have to get it from CyanogenMod. Just run the script with no device nor zip in place and it will tell the exact name of the file to get from the cyanogenmod downloads. You have to run the script from your host computer.

> I hope some of you can understand my frustration. I know absolutely no one personally who does any of this. And I only have so much time I can give to scouring the internet for solutions. Thanks for your help.

I would usually recommend that you get in touch with your local free software users group… if any.

> Thanks to Paul K for doing Replicant. My wife thinks I'm crazy to bother with this stuff, but I'd rather have Replicant than her beautiful new iPhone 6 with iOS. I'll take the free software with just enough firmware to give me wifi and bluetooth.

I understand your attitude, I do use the proprietary firmwares as well, but I hope you understand that Replicant cannot distribute nor provide instructions for installing those.

#31 confused said :

I managed to finally get Replicant on my device, only to discover the camera and wifi does not work. Happily I found this page, but I read the instructions 10 times and still do not understand what to do, is there any way to list a step by step instruction that linux beginners can understand? It will be to everyone's benefit, the easier it is to understand the more Replicant users and supporters you are going to get, yes? :)

#32 ron said :

I want to switch to replicant to avoid the Samsung Backdoor, will using your script create any possibility of the backdoor slipping through the proprietary firmware installed?

Another related question, does the baseband OS (which is untouchable) contain the proprietary firmwares, which it can load and control the hardware remotely even though we don't install the proprietary firmware on the replicant level?

#33 Paul Kocialkowski said :

@confused : I updated the article with step-by-step instructions. If you still cannot figure it out or feel uncertain about it, I suggest that you get in touch with someone who will understand these instructions properly and help you with the process. Local GNU/Linux and free software user groups, as well as hackerspaces are good picks for finding such people.

#34 Paul Kocialkowski said :

@ron : Well, firmwares that relate to networking (such as Wi-Fi) do have sufficient abilities to compromise your device to some extent, but it's a distinct issue from the Samsung Galaxy Back-door.
The modem firmware (which is more of a full system, really) is preinstalled on the device and loaded to the modem by Replicant at boot time. It is obvious that this piece of software has the ability of being remotely controlled. What parts of the hardware it can actually control depends on each specific device. I suggest that you read: http://www.replicant.us/freedom-privacy-security-issues.php for a deeper understanding of the issue.

#35 guy said :

Hi Paul,
thanks for the great work.
Unfortunately, I couldn't get wifi (nor bluetooth) to work. My phone is an S2, i9100. First, I didn't succeed with adb. The phone is always in debugging mode; at least it says so. But adb seems not to be able to connect:

> adb devices
List of devices attached
???????????? no permissions

> adb root
error: insufficient permissions for device
(same as root)

But fortunately, there was another way. (I had to remane cm-9.1.0-galaxys2.zip to cm-9.1.0-i9100.zip though.) It took me some time to figure out what "using recovery" means: Start the phone with Volume UP, Select and the power button pressed; or restart the phone choosing recovery. Anyway, I was able to install the zip file, at least, I think so. However, the wifi off/on button is still greyed out and the bluetooth button jumps back to off immediately.

Did I miss something? How should I proceed?

#36 Paul Kocialkowski said :

@guy : You probably need to allow the device when connecting it to your computer with USB. See https://redmine.replicant.us/projects/replicant/wiki/ADB but note that you'd have to remove and plug back the USB cable if doing this on first boot.

Also, if you wish to use cm-9.1.0, you need to select that branch, with:
> git checkout cm-9.1.0

instead of renaming the zip and using the wrong version of the script.

#37 guy said :

I was on cm-9.1.0, but apparently I got confused with all those cm versions for the galaxy s2 and chose the wrong one. This time I tried cm-10.1.3-i9100.zip with cm-10.1.3 and got wifi and bluetooth working with the zip/recovery method.

ADB still doesn't work for me, but I'll leave that for another day.

Thank you again for this great project.

#38 Moso said :

Hi Paul,

Please try to help me, I'm struggling with my Samsung GT-I9300 for long six days and can't get bluetooth or "normal" USB connection.

Last week, after my battery deplet I made a full charge and when turn on the phone some weird error about encryptation appeared. The phone won't boot anymore.

I have done a standard ROM flash procedure and since that, no matter what ROM I put in, phone hangs or reboot when I try to turn on bluetooth.

Besides that, "normal" USB connection isn't possible anymore. The command "adb devices" show nothing. Strangely, I can put the phone on "download mode" and flash any ROM to it.

I already tried with different cables (all Samsung original), different computers (Windows and Mac), different USB ports on the computers and nothing seems to work...

Tried to put back several Samsung stock ROMs, ArchiDroid, Cyanogen, etc.

I done extense Google research and cannot get out of this situation by myself. Now I need to receive help from the pros. :D

#39 Paul Kocialkowski said :

@Moso : I don't see how your problem is related to this blog post, sorry. It looks like you're having a hardware issue here. Either way, this is not the place for asking for general purpose support with your device and I don't have any time or will to help you with it, sorry.

#40 Inko I. A. said :

It worked for me creating the zip file!

Although I've to remove a line inside updater-script not to have "Status 7 error"...

Many thanks!

#41 Divan Santana said :

Hey Paul,

Thanks for your work on Replicant! And thanks for this blog too.

Unfortunately we still require some firmware for essential things like WiFI.

I'm trying this with replicant 6.0 and the SGS3.

Things have changed a bit since this.

These are the files under vendor from the cm-13.0-20160227-NIGHTLY-i9300.zip

tmp2 ᐅ find vendor
vendor
vendor/firmware
vendor/firmware/SlimISP_BH.bin
vendor/firmware/SlimISP_GD.bin
vendor/firmware/SlimISP_GH.bin
vendor/firmware/SlimISP_GK.bin
vendor/firmware/SlimISP_JH.bin
vendor/firmware/SlimISP_PH.bin
vendor/firmware/SlimISP_WH.bin
vendor/firmware/SlimISP_ZD.bin
vendor/firmware/SlimISP_ZH.bin
vendor/firmware/SlimISP_ZK.bin
vendor/firmware/SlimISP_ZM.bin
vendor/firmware/fimc_is_fw.bin
vendor/firmware/mfc_fw.bin
vendor/firmware/setfile.bin
vendor/lib
vendor/lib/drm
vendor/lib/drm/libdrmwvmplugin.so
vendor/lib/libWVStreamControlAPI_L1.so
vendor/lib/libavcodec.so
vendor/lib/libavformat.so
vendor/lib/libavutil.so
vendor/lib/libbt-vendor.so
vendor/lib/libffmpeg_extractor.so
vendor/lib/libffmpeg_omx.so
vendor/lib/libffmpeg_utils.so
vendor/lib/libswresample.so
vendor/lib/libswscale.so
vendor/lib/libwvdrm_L1.so
vendor/lib/libwvm.so
vendor/lib/mediadrm
vendor/lib/mediadrm/libdrmclearkeyplugin.so
vendor/lib/mediadrm/libwvdrmengine.so

Tried copying above vendor/firmware/* into /system/vendor/firmware/

And rebooted but wifi still not working.

Any ideas?

#42 Paul Kocialkowski said :

@Divan Santana : Sorry, my work is based on CM 12.1, I haven't looked at newer versions yet, so your guess is as good as mine.

#43 fervi said :

@Paul
Hey.

What with the lack of accelerated 2D / 3D? Not on the list, which does not work. You may know of a library that must be loaded?

#44 Paul Kocialkowski said :

@fervi : This article is about missing firmwares (that are not executed on the main processor), it does not cover processor-side libraries and such, that are required for graphics acceleration and 3D to work.

#45 kelly said :

@Divan_Santana - here's what I used to get my wifi/bluetooth working on Replicant 6.0:
/bin/bcm4334.hcd
/bin/bcm4334_murata.hcd
/bin/bcm4334_semco.hcd
/bin/bcm4334_semcosh.hcd
/etc/wifi/ - everything except p2p_supplicant_overlay.conf, wpa_supplicant.conf, and wpa_supplicant_overlay.conf
/vendor/firmware/fimc_is_fw.bin
/vendor/firmware/mfc_fw.bin
/vendor/firmware/setfile.bin
/vendor/firmware/SlimISP_GD.bin
/vendor/firmware/SlimISP_ZD.bin

I have no idea what the rest of the SlimISP.bin files do - I'm guessing at least one of them controls video, since the video does not work on my phone, but with these two files, I have the front and back cameras working fine.

I didn't need any of that stuff in the lib directory to make my wifi, bluetooth, or camera work, and am not sure what it does. Maybe that does something with the GPS? I was not all that interested in activating the GPS so I left it all out.

But tl;dr - I think the reason why your wifi is not working is because you need that /etc/wifi directory.

#46 fr said :

Fantastic resource - many thanks Paul K.

This may help anyone having similar problems to @rm above (post #22) - i.e. wifi doesn't turn on even with all the firmwares in the right place. In my case this also happened on an S2 - "turning wifi on" would never complete.

It turned out the device was originally French and my wifi country code was not included in the android settings database.

The solution was found here (#13):
http://forum.xda-developers.com/showthread.php?t=2166126&page=2

#47 Christian Pietsch said :

@kelly: To get wifi and bluetooth working, it is not necessary to copy any files to the /bin directory. Please don't do this.

#48 belette said :

just want to say merci Paul !
I have purchased an i9300 and successfully installed Replicant !
I can live without wireless card & GPS but Bluetooth is mandatory for me (headset, hands free in car, external GPS...) so I followed your procedure and it is working perfectly !!!
I just added the 3x bcm4334 files and nothing more.
I know you already aware this but I think if there is a priority list to try to develop free support I would begin with Bluetooth as it gives access to other devices where the function is not available inside the phone because of the proprietary software.
Again many thanks for your effort et longue vie à Replicant

#49 rootaste said :

Thanks ! It's working as good as it could be ! From my point of view it is a good compromise.

#50 Luis said :

Thanks a lot Paul,

I have been trying for long time to have a free smartphone. Tried BQ's Ubuntu phone, but not totally free. The best option is certainly replicant, but I was really missing wifi. Having to rely on 3G was a pain. I agree with rootaste is a good compromise. Life is made of compromises...
Thank again and keep on the good job !
Luis
PS: installation was successful using the CM-10.1.3 script on a GT-I9100 running 3.0.64-replicant

#51 Megver83 said :

awesome!! I've always wanted Replicant, and with this guide, getting wifi and bluetooth it becomes so easy

Thx Paul! You're great!!

#52 Michele said :

Hi Paul,
I have just installed Replicant on Samsung Galaxy II (i9100) and it works like a charm. Full wireless/bluetooth connectivity, camera is ok too. GPS isn't working, but I don't want proprietary software on my device.
Really thanks for your precious support, go Replicant, go!

#53 Jason said :

Looks like the link Paul provided for the CyanogenMod 10.1.3 installation zip stable - Galaxy S 3 (I9300) is currently not working (over quota error). Any ideas? Is there an alternative link someone knows about or can provide? -Thanks! (btw - here's the currently broken link I'm referring to: https://download.cyanogenmod.org/?device=i9300&type=stable).

#54 Leonardo said :

Hello, please excuse me for my low level of English language

I just bought a remanufactured (or refurbished) Galaxy S3. Unfortunately I can not follow your instructions because the cyanogenmod server is no longer active and I can not download the rom. Is there another site where I can download that rom?

Please correct me if I am wrong, I understand that I specifically need version 10.1.3 of cyanogemod to run your script... right? .... but where is that script? .... If all the firmwares/drivers are in your link, Why do I need to download a cyanogemod rom? I do not see any step of your instructions where the cyanogenmod rom is used.

I think it may be that I'm not understanding anything at all.... Sorry

Please, could you repeat me these steps in a more detailed form considering that I never did a similar process?

Thank you

#55 Leonardo said :

Jason, I found a mirror:

http://web.archive.org/web/20161225100719/https://download.cyanogenmod.org/?type=stable&device=i9300

#56 Leonardo said :

Hi Paul,

I have install replicant 4.2 0004 in my i9300 (originally with android 4.3 stock rom)

I have cloned your script and I have located cm-10.1.3-i9300.zip in script directory...

then, with my phone turn on, running replicant, I did:

# adb kill-server
# adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
xxxxxxxxxxxxxxxx unauthorized

Ok, it looks I shoud give authorization from de phone, then I did it...

# adb devices
List of devices attached
xxxxxxxxxxxxxxxx device

# ./cm-firmwares.sh i9300
adbd is already running as root
remount succeeded
Pushing /system/vendor/firmware/bcm4334.hcd
/system/vendor/firmware/bcm4334_murata.hcd
/system/vendor/firmware/bcm4334_semcosh.hcd
/system/vendor/firmware/bcmdhd_apsta.bin_b1
/system/vendor/firmware/bcmdhd_apsta.bin_b2
/system/vendor/firmware/bcmdhd_mfg.bin_b0
/system/vendor/firmware/bcmdhd_mfg.bin_b1
/system/vendor/firmware/bcmdhd_mfg.bin_b2
/system/vendor/firmware/bcmdhd_p2p.bin_b0
/system/vendor/firmware/bcmdhd_p2p.bin_b1
/system/vendor/firmware/bcmdhd_p2p.bin_b2
/system/vendor/firmware/bcmdhd_sta.bin_b0
/system/vendor/firmware/bcmdhd_sta.bin_b1
/system/vendor/firmware/bcmdhd_sta.bin_b2
/system/vendor/firmware/nvram_mfg.txt
/system/vendor/firmware/nvram_mfg.txt_murata
/system/vendor/firmware/nvram_mfg.txt_murata_b2
/system/vendor/firmware/nvram_mfg.txt_semcosh
/system/vendor/firmware/nvram_net.txt
/system/vendor/firmware/nvram_net.txt_murata
/system/vendor/firmware/nvram_net.txt_murata_b2
/system/vendor/firmware/nvram_net.txt_semcosh
/system/vendor/firmware/fimc_is_fw.bin
/system/vendor/firmware/setfile.bin
[100%] /system/vendor/firmware/bcm4334.hcd

but... I don't have wifi yet, I can't turn on wifi...

Please, tell me what I'm doing wrong?

Thanks

#57 Leonardo said :

Installing firmware from a .zip in recovery mode works for me (at least I have wifi now)... but I dond't know what I did wrong with the 'adb way'...

other strange thing is I can't see external microsd in recovery mode, but I suppose it is a replicant distribution issue

#58 Milo said :

Hello Paul,
Thank you for your effort!
Could you help with Replicant 6.0 and lineageos.org (wifi)?
Kind regards

#59 Fanch said :

Hi ! Thanks for this documentation ! Although the script did not work directly, it allowed me to find the right files and put them in the right place, used to work on S2 i9100 with replicant 4.2.

However, switching to replicant 6.0, it does not work anymore. The phone enters a reboot loop as soon as I enable wifi :-(.

Any clues ?

Cheers
Francois

#60 DamnFinn said :

@Fanch: Have you installed the correct version regarding to your mobile model and LineageOS 13.0? Maybe you have installed an incompatible version of the WiFi / Bluetooth firmware.

#61 Daniel said :

Thanks a lot for the info. Could you give some tip for Replicant 6.0? I tried the script by myself with lineage-13.0 without success.

#62 JJ said :

Thank you so much for this great work. I have Replicant 6.0 002 on my Samsung s3 i9300, its great! I like others also cannot do without wifi and would like to use this rather than install another OS and use even more proprietary software.

So far i found the CyanogenMod 10.1.3 download from someone else in the comments (thank you), i ran this

git clone git://git.paulk.fr/cm-firmwares.git -b cm-10.1.3

then adb devices just to be sure and the device came up,


i got this in terminal

~cm-firmwares/cm-firmwares.sh i9300
restarting adbd as root
remount succeeded
Pushing /system/vendor/firmware/bcm4334.hcd
770 KB/s (39843 bytes in 0.050s)
Pushing /system/vendor/firmware/bcm4334_murata.hcd
960 KB/s (39838 bytes in 0.040s)
Pushing /system/vendor/firmware/bcm4334_semcosh.hcd
991 KB/s (39843 bytes in 0.039s)
Pushing /system/vendor/firmware/bcmdhd_apsta.bin_b1
4846 KB/s (395113 bytes in 0.079s)
Pushing /system/vendor/firmware/bcmdhd_apsta.bin_b2
4878 KB/s (312174 bytes in 0.062s)
Pushing /system/vendor/firmware/bcmdhd_mfg.bin_b0
4800 KB/s (211933 bytes in 0.043s)
Pushing /system/vendor/firmware/bcmdhd_mfg.bin_b1
4845 KB/s (418047 bytes in 0.084s)
Pushing /system/vendor/firmware/bcmdhd_mfg.bin_b2
4619 KB/s (431566 bytes in 0.091s)
Pushing /system/vendor/firmware/bcmdhd_p2p.bin_b0
4924 KB/s (195361 bytes in 0.038s)
Pushing /system/vendor/firmware/bcmdhd_p2p.bin_b1
4630 KB/s (437991 bytes in 0.092s)
Pushing /system/vendor/firmware/bcmdhd_p2p.bin_b2
4639 KB/s (443029 bytes in 0.093s)
Pushing /system/vendor/firmware/bcmdhd_sta.bin_b0
4533 KB/s (196132 bytes in 0.042s)
Pushing /system/vendor/firmware/bcmdhd_sta.bin_b1
4708 KB/s (437991 bytes in 0.090s)
Pushing /system/vendor/firmware/bcmdhd_sta.bin_b2
4589 KB/s (344835 bytes in 0.073s)
Pushing /system/vendor/firmware/nvram_mfg.txt
59 KB/s (2649 bytes in 0.043s)
Pushing /system/vendor/firmware/nvram_mfg.txt_murata
45 KB/s (1911 bytes in 0.041s)
Pushing /system/vendor/firmware/nvram_mfg.txt_murata_b2
44 KB/s (1972 bytes in 0.043s)
Pushing /system/vendor/firmware/nvram_mfg.txt_semcosh
64 KB/s (2757 bytes in 0.041s)
Pushing /system/vendor/firmware/nvram_net.txt
60 KB/s (2582 bytes in 0.041s)
Pushing /system/vendor/firmware/nvram_net.txt_murata
38 KB/s (1965 bytes in 0.049s)
Pushing /system/vendor/firmware/nvram_net.txt_murata_b2
47 KB/s (2030 bytes in 0.041s)
Pushing /system/vendor/firmware/nvram_net.txt_semcosh
50 KB/s (2760 bytes in 0.053s)
Pushing /system/vendor/firmware/fimc_is_fw.bin
4737 KB/s (1224246 bytes in 0.252s)
Pushing /system/vendor/firmware/setfile.bin
3943 KB/s (67611 bytes in 0.016s)

I then did adb reboot

I still have no wifi, on the OS the switch goes to the right, turns blue and then goes dead and back to the left and then doesn't animate at all.

I did try this first https://manurevah.com/blah/en/p/Replicant-6-Enabling-Wifi-on-Galaxy-2-i9100

I know its the i9100 but i gave it a go anyway. So maybe whatever that did got in the way, maybe the firmwares are conflicting? Is there anyway i could flash and try again? Or any other help? For some odd reason whatever i did i seem to have got bluetooth working, the switch turns on and the symbol comes on at the top of the screen.

I tried

adb pull /system/vendor/firmware

pull: building file list...
pull: /system/vendor/firmware/setfile.bin -> ./setfile.bin
pull: /system/vendor/firmware/fimc_is_fw.bin -> ./fimc_is_fw.bin
pull: /system/vendor/firmware/nvram_net.txt_semcosh -> ./nvram_net.txt_semcosh
pull: /system/vendor/firmware/nvram_net.txt_murata_b2 -> ./nvram_net.txt_murata_b2
pull: /system/vendor/firmware/nvram_net.txt_murata -> ./nvram_net.txt_murata
pull: /system/vendor/firmware/nvram_net.txt -> ./nvram_net.txt
pull: /system/vendor/firmware/nvram_mfg.txt_semcosh -> ./nvram_mfg.txt_semcosh
pull: /system/vendor/firmware/nvram_mfg.txt_murata_b2 -> ./nvram_mfg.txt_murata_b2
pull: /system/vendor/firmware/nvram_mfg.txt_murata -> ./nvram_mfg.txt_murata
pull: /system/vendor/firmware/nvram_mfg.txt -> ./nvram_mfg.txt
pull: /system/vendor/firmware/bcmdhd_sta.bin_b2 -> ./bcmdhd_sta.bin_b2
pull: /system/vendor/firmware/bcmdhd_sta.bin_b1 -> ./bcmdhd_sta.bin_b1
pull: /system/vendor/firmware/bcmdhd_sta.bin_b0 -> ./bcmdhd_sta.bin_b0
pull: /system/vendor/firmware/bcmdhd_p2p.bin_b2 -> ./bcmdhd_p2p.bin_b2
pull: /system/vendor/firmware/bcmdhd_p2p.bin_b1 -> ./bcmdhd_p2p.bin_b1
pull: /system/vendor/firmware/bcmdhd_p2p.bin_b0 -> ./bcmdhd_p2p.bin_b0
pull: /system/vendor/firmware/bcmdhd_mfg.bin_b2 -> ./bcmdhd_mfg.bin_b2
pull: /system/vendor/firmware/bcmdhd_mfg.bin_b1 -> ./bcmdhd_mfg.bin_b1
pull: /system/vendor/firmware/bcmdhd_mfg.bin_b0 -> ./bcmdhd_mfg.bin_b0
pull: /system/vendor/firmware/bcmdhd_apsta.bin_b2 -> ./bcmdhd_apsta.bin_b2
pull: /system/vendor/firmware/bcmdhd_apsta.bin_b1 -> ./bcmdhd_apsta.bin_b1
pull: /system/vendor/firmware/bcm4334_semcosh.hcd -> ./bcm4334_semcosh.hcd
pull: /system/vendor/firmware/bcm4334_murata.hcd -> ./bcm4334_murata.hcd
pull: /system/vendor/firmware/bcm4334.hcd -> ./bcm4334.hcd
24 files pulled. 0 files skipped.
2002 KB/s (5254179 bytes in 2.562s)

And the ran this again
~cm-firmwares/cm-firmwares.sh i9300
to no avail, just pushes it all on there again

If someone could explain how they did this part " Alternatively, it is possible to create a zip containing the firmwares and install it afterwards, using recovery.
For instance, for the Galaxy S 3 (I9300): "

./cm-firmwares.sh i9300 zip

That might help

Thanks!

#63 JJ said :

Got it working! I put the replicant.zip file back on the root of the phone, went into recovery and re-installed replicant. Then straight away ran the instructions above and it worked! Really good guide and a really good product! Very grateful! This is Replicant 6.0002 on Samsung Galaxy S3

Write a comment

Capcha
Enter image code :