
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.
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.