# SOLVED: rtl8723au: the wireless card...

## Angrychile

I have bought a Lenovo Ideapad Yoga 13 and it contains rtl8723au as a wireless card. There is an unofficial driver for here. Just to point out before anyone asks, the card doesn't require firmware. I have been using ubuntu on this laptop with the driver and it has been working fine. 

However, on gentoo, apparently it appears as an ethernet card. It shows up in ifconfig:

```
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 0  (Local Loopback)

        RX packets 8  bytes 792 (792.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 8  bytes 792 (792.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

sit0: flags=128<NOARP>  mtu 1480

        sit  txqueuelen 0  (IPv6-in-IPv4)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp0s26u1u4i2: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 20:16:d8:f0:51:d9  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

```

However, iwlist claims that it doesn't support scanning. iw list and iw phy also show nothing. Finally, nm-applet calls it a ethernet connection. The driver is indeed loaded for the right thing:

```
#lsusb -t

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M

    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M

        |__ Port 5: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M

        |__ Port 7: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M

        |__ Port 7: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M

    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

        |__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M

        |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=, 480M

        |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=, 480M

        |__ Port 4: Dev 4, If 2, Class=Vendor Specific Class, Driver=rtl8723au, 480M

        |__ Port 5: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
```

This is the same device as in ubuntu.

Strangely, in ubuntu, both ifconfig -a shows it and iwlist scan works, but iw phys shows nothing!

Previously threads/posts that I have found on this issue end abruptly, as per usual: 1 and 2.

I should note that nothing out of the ordinary appears in dmesg. The only note worthy thing is that it is renamed by udev:

```

[    2.569212] usb 1-1.4: skipped 1 descriptor after configuration

[    2.569332] usb 1-1.4: default language 0x0409

[    2.569707] usb 1-1.4: udev 4, busnum 1, minor = 3

[    2.569710] usb 1-1.4: New USB device found, idVendor=0bda, idProduct=1724

[    2.569712] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[    2.569714] usb 1-1.4: Product: 802.11n WLAN Adapter

[    2.569716] usb 1-1.4: Manufacturer: Realtek

[    2.569718] usb 1-1.4: SerialNumber: 00e04c000001

[    2.569894] usb 1-1.4: usb_probe_device

[    2.569898] usb 1-1.4: configuration #1 chosen from 1 choice

[    2.569967] usb 1-1.4: adding 1-1.4:1.0 (config #1, interface 0)

[    2.570150] usb 1-1.4: adding 1-1.4:1.1 (config #1, interface 1)

[    2.570259] usb 1-1.4: adding 1-1.4:1.2 (config #1, interface 2)

...

[    2.939747] rtl8723au 1-1.4:1.2: usb_probe_interface

[    2.939754] rtl8723au 1-1.4:1.2: usb_probe_interface - got id

...

[    3.060046] usbcore: registered new interface driver rtl8723au

[    3.068587] systemd-udevd[1305]: renamed network interface wlan0 to wlp0s26u1u4i2
```

In ubuntu, there is was a generated udev rules file that named it wlan0. Since the driver seemed to be installed well, perhaps the offender is udev?

----------

## Logicien

Wireless devices are Ethernet devices with wireless extensions. When you do iwlist on Gentoo are you root? It can be needed. You may miss some necessary kernel options to make the rtl8723au work on Gentoo like 80211, Usb and things that are related. I dont think Udev can be faulty here because rename a device dont change it's fonctionnalities.

Are you sure that this module can work on non Ubuntu systems? You may have to follow Ubuntu Linux kernel configuration with Gentoo.

----------

## 666threesixes666

emerge linux-firmware & if all else fails post UBUNTUS lsmod & dmesg.

----------

## Angrychile

 *Logicien wrote:*   

> Wireless devices are Ethernet devices with wireless extensions. When you do iwlist on Gentoo are you root? It can be needed. You may miss some necessary kernel options to make the rtl8723au work on Gentoo like 80211, Usb and things that are related. I dont think Udev can be faulty here because rename a device dont change it's fonctionnalities.
> 
> Are you sure that this module can work on non Ubuntu systems? You may have to follow Ubuntu Linux kernel configuration with Gentoo.

 

Yes, I was root. For udev, I see, I wasn't sure whether udev did more than just rename things, so I guess all that is in the kernel?

With regards to kernel options, cfg80211 is enabled. Obviously, something is right because linux tells the world about some network device, at least.

 *666threesixes666 wrote:*   

> emerge linux-firmware & if all else fails post UBUNTUS lsmod & dmesg.

 

As I said, it doesn't require firmware, as the linked post in the OP (the link 1) says. I guess it can't hurt to do it anyway.

Ubuntu dmesg

and 

And here is in ubuntu lsmod

```
Module                  Size  Used by

dm_crypt               23012  1 

hid_sensor_magn_3d     13266  0 

hid_sensor_gyro_3d     13266  0 

hid_sensor_accel_3d    13279  0 

hid_sensor_trigger     12916  3 hid_sensor_gyro_3d,hid_sensor_accel_3d,hid_sensor_magn_3d

industrialio_triggered_buffer    12882  3 hid_sensor_gyro_3d,hid_sensor_accel_3d,hid_sensor_magn_3d

kfifo_buf              13294  1 industrialio_triggered_buffer

industrialio           53968  6 hid_sensor_trigger,hid_sensor_gyro_3d,industrialio_triggered_buffer,hid_sensor_accel_3d,kfifo_buf,hid_sensor_magn_3d

hid_sensor_iio_common    13807  3 hid_sensor_gyro_3d,hid_sensor_accel_3d,hid_sensor_magn_3d

cuse                   13566  3 

cfg80211              504229  0 

x86_pkg_temp_thermal    14269  0 

intel_powerclamp       19031  0 

coretemp               17728  0 

kvm                   457597  0 

crc32_pclmul           13160  0 

ghash_clmulni_intel    13259  0 

aesni_intel            55720  6502 

aes_x86_64             17131  1 aesni_intel

lrw                    13294  1 aesni_intel

gf128mul               14951  1 lrw

glue_helper            14095  1 aesni_intel

ablk_helper            13597  1 aesni_intel

cryptd                 20501  3253 ghash_clmulni_intel,aesni_intel,ablk_helper

joydev                 17575  0 

snd_hda_codec_hdmi     41732  1 

uvcvideo               82247  0 

snd_hda_codec_conexant    57136  1 

videobuf2_vmalloc      13216  1 uvcvideo

videobuf2_memops       13362  1 videobuf2_vmalloc

videobuf2_core         40903  1 uvcvideo

videodev              139144  2 uvcvideo,videobuf2_core

microcode              23650  0 

psmouse               104113  0 

8723au               1086340  0 

serio_raw              13462  0 

snd_hda_intel          57183  3 

snd_hda_codec         194881  3 snd_hda_codec_hdmi,snd_hda_codec_conexant,snd_hda_intel

hid_multitouch         17645  0 

rts5139               318332  0 

hid_sensor_hub         19096  5 hid_sensor_trigger,hid_sensor_gyro_3d,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_iio_common

snd_hwdep              13613  1 snd_hda_codec

parport_pc             32866  0 

snd_pcm               107140  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel

ppdev                  17711  0 

snd_page_alloc         18798  2 snd_pcm,snd_hda_intel

snd_seq_midi           13324  0 

snd_seq_midi_event     14899  1 snd_seq_midi

snd_rawmidi            30465  1 snd_seq_midi

rfcomm                 74658  0 

bnep                   23966  2 

snd_seq                66061  2 snd_seq_midi_event,snd_seq_midi

snd_seq_device         14497  3 snd_seq,snd_rawmidi,snd_seq_midi

bluetooth             391597  10 bnep,rfcomm

snd_timer              30038  2 snd_pcm,snd_seq

snd                    73802  17 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_conexant,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_seq_midi

mac_hid                13253  0 

soundcore              12680  1 snd

lpc_ich                21163  0 

mei_me                 18418  0 

mei                    78609  1 mei_me

lp                     17799  0 

parport                42481  3 lp,ppdev,parport_pc

nls_iso8859_1          12713  1 

usbhid                 53067  0 

hid                   106050  3 hid_multitouch,hid_sensor_hub,usbhid

i915                  729653  3 

i2c_algo_bit           13564  1 i915

ahci                   30063  4 

drm_kms_helper         53165  1 i915

libahci                32088  1 ahci

drm                   303157  4 i915,drm_kms_helper

wmi                    19363  0 

video                  19574  1 i915

```

and lsusb -t in ubuntu

```

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M

/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M

    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M

        |__ Port 5: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M

        |__ Port 7: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M

        |__ Port 7: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M

    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

        |__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=rts5139, 480M

        |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=, 480M

        |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=, 480M

        |__ Port 4: Dev 4, If 2, Class=Vendor Specific Class, Driver=rtl8723au, 480M

        |__ Port 5: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M

```

as I said in the OP, the same.

----------

## Gusar

iw won't show anything because it only works with mac80211 drivers, but rtl8723au is a wext driver. It's weird that iwlist says scanning is not supported. I assume if you were missing wext stuff in your kernel, the driver wouldn't build. Or maybe it would, considering it uses a private wireless stack.

Does your kernel contain wext stuff (CONFIG_WIRELESS_EXT=y CONFIG_WEXT_CORE=y CONFIG_WEXT_PROC=y CONFIG_WEXT_PRIV=y)? If not, compile a new kernel and select the prism54 driver to be built, this will get you the wext stuff. Then compile rtl8723au again while running the new kernel.

PS. Where do you see the device is being treated as ethernet? It was registered as wlan0 and udev renamed it to wl<stuff>, so the system definitely knows it's wireless. Would be weird if it did not, the necessary commit was two months ago: https://github.com/lwfinger/rtl8723au/commit/e3e9c3a76e7aa83a517c79f3ede1b0a2c141ef81

----------

## Angrychile

 *Gusar wrote:*   

> iw won't show anything because it only works with mac80211 drivers, but rtl8723au is a wext driver. It's weird that iwlist says scanning is not supported. I assume if you were missing wext stuff in your kernel, the driver wouldn't build. Or maybe it would, considering it uses a private wireless stack.
> 
> Does your kernel contain wext stuff (CONFIG_WIRELESS_EXT=y CONFIG_WEXT_CORE=y CONFIG_WEXT_PROC=y CONFIG_WEXT_PRIV=y)? If not, compile a new kernel and select the prism54 driver to be built, this will get you the wext stuff. Then compile rtl8723au again while running the new kernel.
> 
> PS. Where do you see the device is being treated as ethernet? It was registered as wlan0 and udev renamed it to wl<stuff>, so the system definitely knows it's wireless. Would be weird if it did not, the necessary commit was two months ago: https://github.com/lwfinger/rtl8723au/commit/e3e9c3a76e7aa83a517c79f3ede1b0a2c141ef81

 

Dude! Awesome it works now. It turned out that CONFIG_WIRELESS_EXT and CONFIG_WEXT_{PROC,PRIV} were not set. How embarrasing. Building prism54 did the trick.

----------

