You guys would know that I have been working on MT7668 WiFi/Bluetooth drivers for PS4 7215/7216 (Baikal and Belize) since some months now. We had our first success in March, when I was able to get WiFi working on affected PS4 Pros, mainly 7215B/7216B. Here is the article for the initial release and this was all thanks to novice4321’s sponsorship.. Then, recently, I open sourced my edition of the MT7668 driver source code for Linux with detailed compilation instructions.
There was a small inconvenience though. The earlier method was distro-specific and required a separate set of files for installation on each distro. While we got it working with kernel 4.19 on Ubuntu, Debian and Fedora-based distros, Arch remained largely elusive. But, recently, a forum member, dhruvin was able to get it to work on Belize PS4s with MT7668, by converting the driver files from .deb (Ubuntu) to .pkg (Arch). Still, Baikal didn’t work.
Anyways, this was long overdue, but, I decided to go ahead and incorporate the drivers into the kernels themselves. What is the benefit here, you ask? Well, now, MT7668 WiFi and Bluetooth works on all PS4 Linux distros, for one. Moreover, no additional steps are required to get WiFi and Bluetooth working. All you have to do is, load your favourite distro on your PS4 with MT7668 chip using the provided kernel and a modified initram image.
As of now, I will be providing kernel 5.4.213 for Baikal (based on whitehax0r‘s source) and 5.15.15 for Belize (based on codedwrench’s source). Also remember that, the driver itself is based on a newer source and there is scope for improvement. So, do share any problems you face with these drivers and I’ll try to improve them. Once everything’s finalised, I will be cleaning up the source in my own time and then, I will open-source it.
Before we begin, I’d like to thank a few people who made this and several other projects possible. First of all, novice4321, for having sposnored the whole initial release of the drivers and for testing them. Next, we have Reo Au In, a long time supporter, hardware and Linux expert, who sponsored the inbuilt kernel drivers and also tested the drivers on Belize. Then, thanks to misfit-michief for testing on Baikal and DF_AUS for donating to the project.
If you can, please consider supporting my further endeavours by donating any amount on Ko-fi.
UPDATE (18th January, 2024) – Fix for DNS issues on MT7668 kernels.
UPDATE 2 (20th June, 2024) – PS4 Baikal & Belize Kernels with MT7668 (incl. DNS fix) and VPN support opensourced.
What’s new?
Compared to my previous drivers for MT7668 PS4s, this one does come with a few updates. This list will be updated as and when I discover new features. For now, here they are. By the way, if you did find a difference between the previous drivers and this one, please let me know.
- WPA3 capability – You can now connect to WPA3 access points.
- Works on all distros. No extra steps required. Just boot with the modified kernel and initram.
- You tell me…
Requirements
- PS4 with MT7668 chipset (Instructions to check here)
- Modified kernel
- 5.4.213 Baikal (whitehax0r)
- 5.15.15 Belize (codedwrench)
- Modified initram (Instructions on modifying yourselves given here)
How to fix MT7668 WiFi and Bluetooth on PS4 with modified kernel?
It’s actually pretty simple. All you have to do is boot tour favourite distro with the modified kernel and initram. The drivers have been tested and confirmed to be working on all the major distros including Debian-based, Fedora-based and Arch-based ones too.
Here is an image shared by Reo Au In showing the drivers in action on Linuxfx (Aliyah Edition):-
As for the initram itself, it’s important to mention that the WiFi and Bluetooth firmware files have been added to them. This has been done so that the files become accessible to the kernel driver on boot itself. But, if you have a custom initram image or are running Linux on the internal PS4 drive, you will have to compile the initram yourself with the necessary firmware files. There are multiple ways to build an initram for PS4. While I love to do it from scratch, most people wouldn’t prefer that. So, I am sharing simple instructions, as shared in Zabovis’ tutorial.
How to build initram with MT7668 WiFi & Bluetooth firmware files ?
This will require a Linux machine or Virtual Machine.
- Copy initramfs.cpio.gz to a suitable folder (let’s call the folder – initram) and open a terminal there.
- Run
zcat initramfs.cpio.gz | cpio -idmv
. This will extract the contents of the initram image. - Delete the initram file (initramfs.cpio.gz).
- Go into lib/firmware folder and open a terminal there.
- Run
git clone https://github.com/noob404yt/mt7668-wifi-bt-firmware.git
. This will download the necessary files into the firmware folder. Make sure you remove the file README.md. - Open a terminal in the folder named initram and run
sudo chown -R noob404.noob404 "lib/firmware"
. Do not forget to replacenoob404.noob404
with your superuser’s name. - When satisfied, on the same terminal, run
find . | cpio -o -c -R root:root | gzip -9 > /home/noob404/initramfs.cpio.gz
. Change the destination as you wish by changing/home/noob404/initramfs.cpio.gz
. - Use the newly created initramfs.cpio.gz with the modified kernel to get WiFi and Bluetooth working on your MT7668 PS4.
Conclusion
Do not forget to share your feedback and talk about any issues with the driver, please leave a comment below or post on the forum thread. I will get back to you. If you’d like to support my projects, please consider donating on Ko-fi.
Thank you! With your drivers, I have finally Wi-Fi on my PS4 Slim 2216A (Baikal).
Don’t mention. BTW, you the real hippie68?
There’s no device under /sys/bus/sdio/devices/
That’s most probably because you don’t have an MT7668.
I’m having issues installing psxitarch using this kernel and initram on my Belize system. When I run install-psxitarch.sh it’ll reformat the drive properly but it doesn’t actually copy any files to the new partitions. It’ll say that it’s installing but then it says it’s finished within a few seconds and I’m dropped back to the rescueshell unable to boot with the start-psxitarch.sh script. any advice? https://i.imgur.com/MGBQLfb.jpeg
Try alternate installation method. Or, use another kernel and initram for installation. Post installation, revert to the ones attached in this article.
Great work. I managed to get this working, but had to spend a while figuring out how. I will let you know of my experience in case it helps you fix issues. Here’s my specs:
Model: Pro CUH-7216B
Southbridge: Belize
Distro: PSXITarch
I was wanting to install Linux on the internal HDD. However, it simply did not work. I tried compiling my own initramfs using your instructions, but when Linux was booting up I was given a ‘Kernel Panic’ (in the output) which was due to an error not being able to find the right device.
So I wiped this internal install and tried external instead, with your provided modified kernel and initramfs. However when installing, it couldn’t find the storage device (which is strange considering it found the bzImage and initramfs) to install Arch to. Maybe it’s the old bug to do with the partition alignment issue that Modded Warfare mentioned in his PS4 Linux install video? So then I reverted to the old bzImage and initramfs, and it installed fine. After that, replaced these with your modified versions, and it now worked.
So yes, in the end it works, with a bit of extra steps. However it’s not internal, which is what I wanted. Still, progress is progress, and I hope you can keep improving on this project. Hope my experience helps you sort out these kinks.
I have the same PS4 Pro model. I used modified kernel 5.15.15 Belize (codedwrench) and Modified initram from here with with Linuxfx (Aliyah Edition). No need to install twice. Everything OK, only there are som problems with Wi-Fi. Connection is stable, but I have some problems with DNS resolving. I tried to modify the symlink /etc/resolv.conf 3 times, but it didn t help. Also tried to insert static IP manual config. Nothing helped to resolve the problem. Anyway BT works likes a charm.
Got wifi/BT to work on internal fedora install with Belize southbridge. Followed instructions for installing fix once in the distro and noob404 list one of the requirements as a modified 4.19 bzimage. Not 5.15 unfortunately. https://ps4linux.com/fix-mt7668-wifi-bluetooth-ps4-7215-7216-belize-baikal
What initram file did u use?
The one intended for Internal HDD install. Believe i got it through his latest video on the subject https://www.youtube.com/watch?v=qlsdUcYrV2M&t=1071s&ab_channel=MODDEDWARFARE
Im trying to build the initram file for my internal internal HDD install. All goes well until the very last line. when I type in
find . | cpio -o -c -R root:root | gzip -9 > home/psxita/out/initramfs.cpio.gz
I get this error:
bash: home/psxita/out/initramfs.cpio.gz: No such file or directory
/home
*facepalm* And I even double checked it. Thank you!
Had a chance to try it out tonight. Same thing happens with /home.
[psxita@psxitarch New]$ find . | cpio -o -c -R root:root | gzip -9 > /home/noob404/initramfs.cpio.gz
bash: /home/noob404/initramfs.cpio.gz: No such file or directory
Again, facepalm. Didn’t replace “noob404” with my username. It’s working now.
Finally! I got WiFi on my PS4 Pro model CUH-7216B. Here is the solution:
1. sudo nano /etc/NetworkManager/NetworkManager.conf
2. change the line: managed=false to managed=true
3. sudo service restart NetworkManager
——————————————————————————————————————————————-
[SOLVED] I have the same PS4 Pro model. I used modified kernel 5.15.15 Belize (codedwrench) and Modified initram from here with with Linuxfx (Aliyah Edition). No need to install twice. Everything OK, only there are som problems with Wi-Fi. Connection is stable, but I have some problems with DNS resolving. I tried to modify the symlink /etc/resolv.conf 3 times, but it didn t help. Also tried to insert static IP manual config. Nothing helped to resolve the problem. Anyway BT works likes a charm.
How did you get it working? I used both these files and it wouldn’t work
This doesn’t work for me , it just says move dev new root dev failed and the install linux line code doesn’t work. I do that code a few times then it freezes when it says its switching a new root
Post in detail on the forum with screenshots, OS, your PS4 model, etc.
Hello, im getting permission denied when modifying initramfs.. can someone pls provide a modified initramfs for internalhdd booting linux!
Add `sudo` before commands that return permission denied.
I got kernel panic when modifying internal hdd initram not working can you please make modded file for internal drive boot (belize)
Same for me as well. Modifying the internal initram not there yet it seems
Try installing fix after getting into the distro. This worked for me but only with an older 4.19 bzimage https://ps4linux.com/fix-mt7668-wifi-bluetooth-ps4-7215-7216-belize-baikal
Same for me as well. Modifying internal initram leads to kernel panic (belieze also)
When you clone the firmware, you should delete .git folder in addition to the Readme.
Can you explain why that is necessary?
Please help, i have the ps4 fat CUH-1216B model, wifi/bluetooth not working at all, I tried fedora and pop ubuntu, modified kernels old and new one and modified initram, but nothing worked.
Known issue. No fix yet though. More details here.
I did this with Pop Os and it worked but every so often it would disconnect and the next day wifi isn’t working at all, it lets me connect to different networks and such but I can’t actually use the internet
On top of this article, check Updates and download the kernel with DNS issue fix and try it.