
Over the past year or so, thanks to the donations from novice4321, Reo Au In, eioltesr1 and many other members of the community, I was able to release a fix for the infamous WiFi and Bluetooth issue on PS4 7215 and 7216 models, both Baikal and Belize. For those unversed, here is a quick history (chronological) of all the fixes and tutorials related to the matter:-
- PS4 MT7668 initial fix (using kernel modules and script)
- PS4 MT7668 fix (built into kernel, with more features – WPA3 support, etc.)
- PS4 MT7668 fix (built into kernel with fix for DNS issue on some models; VPN support)
The latest set of kernels for Baikal and Belize on top of supporting MT7668 WiFi/BT chip also support VPN with Wireguard support on both Baikal and Belize. After all these months’ work, I am happy to release it to the public.
For people who are new to the world of PS4 kernels, let me quickly remind you what this release potentially entails. Other devs or users can use these kernels to build their own versions with support for more features like Docker, NTFS, exFAT. You could even add any later patches like FSR to allow for better gaming performance. By the way, if you are on a PS4 Pro, use these Linux payloads for better gaming performance.
PS4 Baikal & Belize Kernels by noob404
Let me quickly recap the additional features that these kernels provide over their base versions – codedwrench‘s 5.15.15 for Belize and whitehax0r‘s 5.4.213 for Baikal. Here they are:-
- Inbuilt kernel-level support for MT7668 WiFi/Bluetooth chipset on PS4, i.e., will work on any distro
- Fix for DNS error on some models
- VPN support – Wireguard and OpenVPN
- WPA3 support
Download source
The sources are available on GitHub:-
How to compile Baikal & Belize kernels with MT7668 and VPN support?
Previously, I have talked in about adding drivers to Linux kernels. And, even shown how you can compile PS4 Kernels from source. You can use a combination of both these to compile from the kernel source above. Anyways, just for the sake of this article, here are the steps to follow:-
Step 1. Setup build essentials
- Open a terminal.
- On Fedora and Fedora-based distros, type
sudo dnf install gcc git flex make bison openssl-devel elfutils-libelf-devel
and press Enter. - On Ubuntu and Ubuntu-based distros, type
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
and press Enter. - On Arch and Arch-based distros, type
sudo pacman -S base-devel bc python
and press Enter.
This should set you up for kernel compilation. Infact, we may have overdone.
Step 2. Download kernel from source
- Go to the Github page that I have linked above – either Baikal or Belize.
- On the top right, click on Code and under Clone, making sure HTTPS is selected, copy the address, for example,
https://github.com/noob404yt/baikal-5.4.213-mt7668-dns-vpn.git
, i.e., if you chose the Baikal variant. - Make a folder to contain the kernel in a suitable location on your system, say, a folder named kernel.
- Open a terminal within that folder.
- Type
git clone
followed by a space and the Git address we just copied. The final command should look like this –git clone https://github.com/noob404yt/baikal-5.4.213-mt7668-dns-vpn.git
if you chose the Baikal variant. Then, press Enter. - This will create a folder within the kernel folder, we created earlier and download the kernel source within that folder.
Step 3. Compile PS4 Linux kernel from downloaded source
- Change directory into the newly created folder within the kernel folder holding the kernel files. If you cloned the Baikal kernel, the folder will be named baikal-5.4.213-mt7668-dns-vpn. So, you could type
cd baikal-5.4.213-mt7668-dns-vpn
and press Enter. - Optional – If you want to add new features, like for example, exFAT support, type
make menuconfig
and press Enter. Make necessary changes here and save it. Check the driver addition tutorial for a better look into the customisation process. - Now, check how many cores your PC has. Assuming you are doing it on a quad core (4 cores) CPU, on the terminal we already had open, type
make -j5 bzImage
and press Enter. The general rule of thumb is in the command, j should be followed by the number cores plus 1. So, if you were to compile on a PS4 Linux distro, you would typemake -j9 bzImage
as PS4 has an octa core (8 cores) APU. - Once the process is complete, you will find the compiled kernel (bzImage) in the folder – arch/x86/boot.
Step 4. Boot the newly compiled kernel on PS4
- Download modified initram (Alternatively, modify yourselves with instructions here)
- Note: The kernel still requires firmware files to be supplied via the initram.
- Copy the modified initram and bzImage (from Step 3) to the FAT32 partition of your PS4 Linux drive.
- Note: Installation instructions for PS4 Linux distros – Usual method / Faster alternate method.
- Boot Linux as usual.
Conclusion
That’s it for this one, guys. Let me know if you hit any roadblocks. I will try to help.
i’m getting this error when i try to create a bzimage
‘drivers/net/wireless/mediatek/mt76x8/os/linux/gl_cfg80211.c: In function ‘mtk_cfg80211_sched_scan_start’:
drivers/net/wireless/mediatek/mt76x8/os/linux/gl_cfg80211.c:3187:78: error drivers/acpi/power.o
: the comparison will always evaluate as ‘false’ for the pointer opera drivers/base/power/generic_ops.o
nd in ‘request->match_sets + (sizetype)((long unsigned int)i
60)’ must not be NULL [-Werror=address]
3187 | if (request->match_sets == NULL || &(request->match_sets[i]) == NULL) {‘
The easiest thing to try is another distro, maybe an older one like Ubuntu 20.04 or even 18.04. This is most probably a GCC error.
THANK YOU! I’ve been waiting for VPN support!
I saw you reply to a comment on an older tutorial where the bluetooth manager wouldn’t open and disappear after trying to open on arch distros. Is there a fix for this? I’m planning on switching to pop!os, so if it works there i will update.
Can you link that comment?
Noob I see you replying in this thread. I’ve tried over 20 different files combinations to get my 11.0 Baikal southbridge booting on Linux have tried 2 different web hosts and 3 different manual methods. What combination do YOU use on this southbridge? No one ever seems to tell you the correct combo of files and this is SO essential to know! The PlayStation puts out no information on failure like a regular computer it’s impossible for me to tell what going wrong. NO SIGNAL is a death sentence.