Realtek RTL8822BE - WIFI unstable, dropping connection

Run this command to automatically create the /etc/modprobe.d/rtl8822be-blacklist.conf file containing all the required blacklist entries:

echo -e "blacklist btrtl\nblacklist btusb\nblacklist 8822b\nblacklist 8822be\nblacklist r8822b\nblacklist r8822be\nblacklist rtw88\nblacklist rtw88_8822b\nblacklist rtw88_8822be\nblacklist rtw88_pci\nblacklist rtw88_core\nblacklist rtwpci\nblacklist rtw_pci" | sudo tee /etc/modprobe.d/rtl8822be-blacklist.conf

This file will blacklist all the rtl8822be driver modules including Bluetooth, (preventing all from auto-starting).

Then run:

sudo depmod -a && sudo mkinitcpio -P

Then power down (not reboot).



After restarting, install/reinstall the rtw88-dkms-git driver from the Chaotic AUR:

sudo  pacman -Syu rtw88-dkms-git

After the installation is complete, again run:

sudo depmod -a && sudo mkinitcpio -P

Then power off completely, remove the power plug and battery, (if possible). Wait for a minute or so, reconnect power, then boot into Garuda.



After restarting, issue the following command:

sudo modprobe rtw_pci disable_aspm=1


What happens when that last command is run?

Is Network Manager now able to view your local connections that are in your area?

Can you connect to your AP now?



If not run:

systemctl restart NetworkManager


2 Likes

I executed all command as you said except removal of battery...

Yes, last command run successfully but as i said before after rebooting the WIFI works fine.. but after few hours it get disconnect

but after executing your command this shouldnt be happen again right, if it happen again i'll let you know

edit: bluetooth isnt enable should i enable bluetooth or check, is bluetooth was the real problem or not ?

This command that you ran should help with disconnections. However, it will only last until you restart. Upon restart you will need to run the command again until we decide on the right components to blacklist permanently.


If you require Bluetooth to be working run this command:

bash -c "bluetoothctl power off; sleep 1; sudo systemctl stop bluetooth; sleep 1;  sudo modprobe btusb; sleep 2; sudo modprobe btrtl; sleep 2; sudo systemctl start bluetooth; sleep 2; bluetoothctl power on"

If your bluetooth and wifii are still working correctly after running that command, then you should check if bluetooth can be re-enabled permanently.

To check if bluetooth can be permanently enabled, alter the /etc/modprobe.d/rtl8822be-blacklist.conf file contents to this:

#blacklist btrtl
#blacklist btusb
blacklist 8822b
blacklist 8822be
blacklist r8822b
blacklist r8822be
blacklist rtw88
blacklist rtw88_8822b
blacklist rtw88_8822be
blacklist rtw88_pci
blacklist rtw88_core
blacklist rtwpci
blacklist rtw_pci

Open the /etc/modprobe.d/rtl8822be-blacklist.conf file with the text editor kate. Comment out the blacklisting of the two bluetooth modules with hash tags, (at the top of blacklist). Save the changes in the text editor kate. You will be prompted for the root/sudo password to save your changes. You must restart the computer for these changes to take effect.

You will again need to run the following command after startup until we create the correct configuration file to fix this permanently:

sudo modprobe rtw_pci disable_aspm=1

If your wifi and bluetooth are still working properly after modprobing your wifi driver, then the bluetooth entries can be removed from the blacklist permanently. If your wifi and bluetooth are not working properly together after removing the bluetooth entries from the blacklist, then you will need to blacklist them again.

If your bluetooth and wifi work properly together after you modprobe your wifi driver, then you will need to modprobe your wifi driver after each startup until we correct this permanently.

Reboot after making any alterations to configuration files in /etc/modprobe.d.

2 Likes

Fact: I am using linux from past 2 years and previously i was using wired earphone also
didnt try to connect any single bluetooth device with it... But now when i got
bluetooth headphones i tried to connect to lp it isn't connected successfully or
should i say sometimes it did and i recall this, from then the issue wifi arrises to
me.. so im pretty sure either bluetooth is interfaring with wifi or vice-versa...

Ok i understood very clearly, now i am trying this out....

edit: I was not enabled the bluetooth since 12 hours and wifi is working fine but i am enabling it now by following your steps...

1 Like

Have you determined if your Bluetooth requires being permanently disabled?

The proper fix that will not require you to modprobe your wifi driver at each startup still needs to be implemented. I need to know if bluetooth is problematic before I write the new /etc/modprobe.d/rtl8822be.conf file. You need to provide this information for me to be able to create a proper fix for everyone using this adapter.

The post you have marked as a solution isn't really a proper solution. We still need to determine exactly which modules need to be blacklisted to create a permanent solution.



Edit:

We never really finished testing all the driver modules that were specifically required to be blacklisted. I will post new directions that others can follow that contains only the minimum of modules that I think are required to be blacklisted. The new instructions will contain a minimal blacklist as well as an rtl8822be driver option that will ensure you no longer have to manually modprobe the rtw_pci module anymore. I am fairly sure that most of the modules that we blacklisted earlier are no longer necessary. I simply blacklisted all rtl8822be driver modules I could think of to make sure all bases were covered. The comprehensive /etc/modprobe.d/rtl8822be-blacklist.conf file we created earlier for our preliminary testing can now be deleted. Alternately, you can instead archive/backup the blacklist file for future reference, (if you prefer).

To permanently delete the /etc/modprobe.d/rtl8822be-blacklist.conf file you created earlier, issue:

sudo rm /etc/modprobe.d/rtl8822be-blacklist.conf

To instead archive/backup the /etc/modprobe.d/rtl8822be-blacklist.conf file you created earlier, issue:

sudo mv /etc/modprobe.d/rtl8822be-blacklist.conf /etc/modprobe.d/rtl8822be-blacklist.conf.bak

Follow the directions below for creating a new /etc/modprobe.d/rtl8821be.conf file to replace our earlier blacklist testing version. At this point I don't have enough information to make a final determination if blacklisting both bluetooth modules is truly necessary for most users. Therefore, I have left it up to the user to decide if Bluetooth requires blacklisting or not in the final version below.

The instructions below differ somewhat from all the steps we took above. If the new modified /etc/modprobe.d/rtl8821be.conf file below works for you, then switch your solution to the post below.

3 Likes


How to get your RTL8822BE Wifi adapter working:



Create a combination rtl8821be driver option/blacklist configuration file with the following command:

sudo touch /etc/modprobe.d/rtl8822be.conf

Open the newly created /etc/modprobe.d/rtl8822be.conf file with your favorite text editor.

Add the following contents to the newly created /etc/modprobe.d/rtl8822be.conf file:

blacklist rtw88_8822be
options rtw_pci disable_aspm=1

Then save the file with your text editor, (using root authorization).



If you are unsure of how to create the configuration file yourself, you can instead generate the required /etc/modprobe.d/rtl8822be.conf file automatically with the following command:

echo -e "blacklist rtw88_8821be \noptions rtw_pci disable_aspm=1" | sudo tee /etc/modprobe.d/rtl8821be.conf


After creating the /etc/modprobe.d/rtl8822be.conf file, issue the following command:

sudo depmod -a && sudo mkinitcpio -P

The above command(s) will take a bit of time to complete, which is normal.

Once the operation has finished running, power off the computer completely, (do not reboot).



Install the rtw88-dkms-git driver from the Chaotic AUR.

If you have already installed the above Chaotic AUR driver (or any other driver version), uninstall that driver before proceeding. Once the driver has been uninstalled, then install the rtw88-dkms-git Chaotic AUR driver with the following command:

sudo  pacman -Syu rtw88-dkms-git

After the installation is complete, again run:

sudo depmod -a && sudo mkinitcpio -P

After the above command has finished running, power off completely. Then remove the computer's power plug and battery, (if possible). Wait for a minute or so, reconnect the power plug, then boot into Garuda.



Once booted into Garuda, your wifi and bluetooth should hopefully be working correctly.



Edited (to be more concise):

Portions regarding the disabling of Bluetooth have been relocated further below.

4 Likes

This command isn't running in terminal and also the UI of terminal become very basic all attractive interface of terminal is gone, and also the wifi is working fine since i modprobe the wifi and blacklisted bluetooth....

What do you mean by "This command it isn't running"?

If the command executed without an error, then that is what you want.

Did you check your bluetooth to see if it was running after the command was executed?

Did your wifi continue to work properly if your bluetooth modules are now running?

We need to know if your bluetooth modules are now operational, please post:

lsmod | grep -Ei 'btrtl|btusb'

The interface of your terminal is now basic, because the command switched the terminal temporarily to bash (from fish). Simply close the terminal window, and open another instance and the old appearance will return. I often use bash commands as fish processes commands differently and will sometimes throw an error when bash doesn't complain.

Did you remove the old blacklist file we created before?

Did you create the new /etc/modprobe.d/rtl8822be.conf file with the revised contents?

Was your wifi working at startup as it should be after creating the new /etc/modprobe.d/rtl8822be.conf file, (with the newly revised contents)?

We need to know all this information so that we can pin down a proper working fix that doesn't require manually modprobing drivers.

Edit:

I have made several edits, including to the command I wanted executed, so please reread everything carefully once again.

3 Likes

FIrst, when i wrote the command and press enter nothing is happening it just counting the space...

Also this command throws an error i.e

[email protected] in ~ as 🧙 took 2s
[[✔️]|[🔴]] => 🔴ERROR × lsmod | grep -Ei 'btrtl|btusb'

 [email protected] in ~ as 🧙 took 16ms
[[✔️]|[🔴]] => 🔴ERROR × 

Third, the bash terminal is not temporarily in my case, it is not converting to previous one after opening several instances...

The main thing is .conf file command is not executing and i cant able to remove blacklisting of bluetooth as i can not go to file..
either you will tell me how to open .conf file or give me a command to remove blacklisting of bluetooth as you did before....

If you are still having problems with your wifi, then you should test out disabling bluetooth. Many Wifi/BT combo chips have signal interference issues that can degrade the performance of either (or both) Wifi and BT. To test if disabling bluetooth can help correct your connectivity issues you will need to blacklist both of your adapters bluetooth modules.

To disable/blacklist bluetooth, modify the rtl8822be.conf file to look exactly as below:

blacklist btrtl
blacklist btusb
blacklist rtw88_8822be
options rtw_pci disable_aspm=1

Alternately, instead of manually editing /etc/modprobe.d/rtl8822be.conf to enable or disable bluetooth, you can simply run the commands below to do it for you automatically.

Run the following command to create an /etc/modprobe.d/rtl8822be.conf with bluetooth disabled/blacklisted:

echo -e "blacklist btrtl \nblacklist btusb \nblacklist rtw88_8821be \noptions rtw_pci disable_aspm=1" | sudo tee /etc/modprobe.d/rtl8822be.conf

Run the following command to create an /etc/modprobe.d/rtl8822be.conf with bluetooth enabled:

echo -e "blacklist rtw88_8821be \noptions rtw_pci disable_aspm=1" | sudo tee /etc/modprobe.d/rtl8822be.conf

Reboot after creating or altering the /etc/modprobe.d/rtl8821be.conf file.

If your wifi performance is improved with bluetooth disabled, then you will likely need to leave the BT modules blacklisted. If there is no significant improvement with the bluetooth disabled, then you can again comment out the top two lines. You can also simply run either of the commands above to automatically enable or disable bluetooth at startup.

Always restart after making any alterations to configuration files in /etc/modprobe.d.

There is still the possibility to use bluetooth (even after blacklisting) by manually modprobing the bluetooth modules. You can use the command below to test if wifi/bt can function properly together after login.

To start bluetooth temporarily, (only lasts one session):

sudo modprobe btusb; sleep 2; sudo modprobe btrtl; sleep 2; sudo systemctl start bluetooth; sleep 2; bluetoothctl power on

If you can use bluetooth and wifi effectively after modprobing your BT modules then this is an adequate workaround for now. A service could most likely be created to start BT automatically. However, that is a topic for another thread.



After removing the blacklist.conf and enable the bluetooth when i power off, then start the bluetooth is not actually enabled...

Did you delete the prior /etc/modprobe.d/rtl8822be-blacklist.conf ?

Please post:

systemctl status bluetooth

It is difficult for me to troubleshoot bluetooth issues for you, as I keep bluetooth completely disabled by masking bluetooth on my system.

So, wifi is working correctly at startup with the new /etc/modprobe.d/rtl8821be.conf file?

Also post:

lsmod

I again restarted the lp, now bluetooth is showing active status and currently wifi is working

lsmod
Module                  Size  Used by
snd_seq_dummy          16384  0
snd_hrtimer            16384  1
snd_seq                94208  7 snd_seq_dummy
snd_seq_device         16384  1 snd_seq
rfcomm                 94208  16
ccm                    20480  6
qrtr                   49152  4
cmac                   16384  4
algif_hash             20480  1
algif_skcipher         16384  1
af_alg                 36864  6 algif_hash,algif_skcipher
bnep                   32768  2
vfat                   24576  1
fat                    90112  1 vfat
uvcvideo              155648  0
videobuf2_vmalloc      20480  1 uvcvideo
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         40960  1 uvcvideo
intel_rapl_msr         20480  0
videobuf2_common       90112  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
intel_rapl_common      36864  1 intel_rapl_msr
videodev              311296  3 videobuf2_v4l2,uvcvideo,videobuf2_common
edac_mce_amd           53248  0
rtw88_8822be           16384  0
kvm                  1159168  0
mc                     77824  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
rtw_8822b             229376  1 rtw88_8822be
snd_hda_codec_hdmi     90112  1
rtw_pci                36864  1 rtw88_8822be
irqbypass              16384  1 kvm
snd_ctl_led            24576  0
rtw_core              270336  2 rtw_8822b,rtw_pci
snd_hda_codec_realtek   184320  1
snd_hda_codec_generic   110592  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_ctl_led,snd_hda_codec_generic
crct10dif_pclmul       16384  1
btusb                  69632  0
snd_hda_intel          61440  2
crc32_pclmul           16384  0
btrtl                  28672  1 btusb
snd_intel_dspcfg       32768  1 snd_hda_intel
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
snd_hda_codec         188416  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
btbcm                  20480  1 btusb
ghash_clmulni_intel    16384  0
mac80211             1286144  2 rtw_core,rtw_pci
snd_hda_core          122880  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_co
dec_realtek
btintel                49152  1 btusb
aesni_intel           380928  9
joydev                 28672  0
bluetooth             794624  45 btrtl,btintel,btbcm,bnep,btusb,rfcomm
snd_pci_acp6x          16384  0
snd_hwdep              16384  1 snd_hda_codec
snd_pci_acp5x          20480  0
snd_pcm               176128  5 snd_hda_codec_hdmi,snd_pci_acp6x,snd_hda_intel,snd_hda_codec,snd_hda_core
libarc4                16384  1 mac80211
crypto_simd            16384  1 aesni_intel
cfg80211             1089536  2 rtw_core,mac80211
hp_wmi                 36864  0
cryptd                 28672  3 crypto_simd,ghash_clmulni_intel
mousedev               24576  0
sparse_keymap          16384  1 hp_wmi
snd_rn_pci_acp3x       24576  0
snd_timer              49152  3 snd_seq,snd_hrtimer,snd_pcm
rapl                   16384  0
platform_profile       16384  1 hp_wmi
snd                   135168  17 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,sn
d_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm
ecdh_generic           16384  2 bluetooth
psmouse               225280  0
snd_pci_acp3x          20480  0
soundcore              16384  2 snd_ctl_led,snd
rfkill                 32768  9 hp_wmi,bluetooth,cfg80211
wmi_bmof               16384  0
crc16                  16384  1 bluetooth
ccp                   139264  0
rng_core               16384  1 ccp
sp5100_tco             20480  0
r8169                 122880  0
i2c_piix4              36864  0
realtek                36864  1
k10temp                16384  0
mdio_devres            16384  1 r8169
i2c_scmi               20480  0
mac_hid                16384  0
libphy                176128  3 r8169,mdio_devres,realtek
acpi_cpufreq           32768  0
wireless_hotkey        16384  0
pinctrl_amd            32768  0
squashfs               81920  6
loop                   32768  12
uinput                 24576  0
ipmi_devintf           20480  0
ipmi_msghandler        86016  1 ipmi_devintf
crypto_user            20480  0
fuse                  180224  3
zram                   40960  2
bpf_preload            16384  0
ip_tables              32768  0
x_tables               61440  1 ip_tables
btrfs                1789952  1
blake2b_generic        20480  0
libcrc32c              16384  1 btrfs
crc32c_generic         16384  0
xor                    24576  1 btrfs
raid6_pq              122880  1 btrfs
usbhid                 77824  0
serio_raw              20480  0
atkbd                  36864  0
libps2                 24576  2 atkbd,psmouse
crc32c_intel           24576  2
xhci_pci               24576  0
xhci_pci_renesas       24576  1 xhci_pci
i8042                  49152  0
serio                  28672  6 serio_raw,atkbd,psmouse,i8042
nouveau              2846720  0
mxm_wmi                16384  1 nouveau
wmi                    40960  4 hp_wmi,wmi_bmof,mxm_wmi,nouveau
radeon               1970176  0
i915                 3493888  0
video                  57344  2 i915,nouveau
intel_agp              24576  0
intel_gtt              28672  2 intel_agp,i915
amdgpu               9240576  37
gpu_sched              53248  1 amdgpu
drm_ttm_helper         16384  3 amdgpu,radeon,nouveau
ttm                    90112  5 amdg

edit: currently wifi is working fine if in future wifi again creating the problem

should i follow this guide?

1 Like

Yes, thank you.

To change back to fish shell.

chsh -s /bin/fish
1 Like
chsh -s /bin/fish
Changing shell for ritesh.
Password: 
chsh: Shell not changed.

I also checked in garuda assistance it is showing fish but it is still a bash
edit: I also checked several fixes..

I'm sorry I'm really not sure what is happening with your system, as I have never used fish. I installed Garuda before they switched to fish, and I've never wanted to make the switch.I'm old and set in my ways, so bash is what I use. if you can't figure it out, open a new help request and I'm sure someone more familiar with fish and the Garuda terminal modifications can fix you up.

Sorry for the dumb question...: are you sure the password was correct?
Have you tried chsh -s /user/bin/fish? Although this shouldn't make any difference normally.
Have you tried opening another terminal, logoff/logon, etc?
Finally, if you open your terminal (konsole) and open Settings -> Edit Current Profile..., do you see in the Command: field /usr/bin/fish ?

How do you know that?
What did you check it with?

How does that help us?

If the terminal use fish, it stay on fish, so, no shell changed.

env | grep SHELL
STARSHIP_SHELL=fish
SHELL=/bin/fish
3 Likes

Yes, I changed it to fish again..
Solution: open terminal-> go to Settings -> edit current profile -> now blue tick default profile -> Apply and ok

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.