Wifi Desteği - Problemli Senaryo Örneği

Orange Pi Zero 7$'lık fiyatı ile her ne kadar çok cazip görünse de, elbette ucuz etin yahnisi durumu burada da söz konusu oluyor.

Linux mainline kernel 4.13'te ne ethernet nede wifi desteklenmiyor. Daha önceki sürümlerle çalışan, çok da iyi olmayan bir ethernet ve wifi desteği mevcut olmakla birlikte, yeni kernel'lar ile birlikte kullanılan subsystem'lerdeki değişikliklere göre gereken güncellemeleri yapmadıkları için, mainline kernel'dan çıkartılmış. Problemin yakın zamanda çözüleceği belirtilmiş ancak an itibariyle sorunun devam ettiğini görüyoruz.

Bu yazıyı okuduğunuz sırada kernel versiyonu muhtemelen 4.13'ten yüksek ve burada bahsettiğimiz problem tamamen çözülmüş olacak. Bununla birlikte özellikle gömülü sistemler ile çalışırken zaman zaman karşılaşabileceğiniz bu tarz durumlara örnek teşkil etmesi amacıyla, wifi modülünü çalıştırmak için neler yaptığımız aktarmaya çalışacağız.

/home/demirten/embedded/orange/xradio/rx.c: In function ‘xradio_rx_cb’:
/home/demirten/embedded/orange/xradio/rx.c:205:16: error: ‘RX_FLAG_HT’ undeclared (first use in this function)
   hdr->flag |= RX_FLAG_HT;
                ^~~~~~~~~~
/home/demirten/embedded/orange/xradio/rx.c:205:16: note: each undeclared identifier is reported only once 
for each function it appears in

...

...

--- ./arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts.orig    2017-09-08 20:15:25.338333936 +0300
+++ ./arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts    2017-09-08 20:25:25.267811462 +0300
@@ -56,7 +56,7 @@

     aliases {
         serial0 = &uart0;
-        ethernet1 = &xr819;
+        ethernet1 = &xr819wifi;
     };

     chosen {
@@ -78,6 +78,16 @@
         };
     };

+    vdd_wifi: vdd_wifi {
+        compatible = "regulator-fixed";
+        regulator-name = "wifi";
+        regulator-min-microvolt = <1800000>;
+        regulator-max-microvolt = <1800000>;
+        gpio = <&pio 0 20 GPIO_ACTIVE_HIGH>;
+        startup-delay-us = <70000>;
+        enable-active-high;
+    };
+
     reg_vcc_wifi: reg_vcc_wifi {
         compatible = "regulator-fixed";
         regulator-min-microvolt = <3300000>;
@@ -115,19 +125,22 @@
 &mmc1 {
     pinctrl-names = "default";
     pinctrl-0 = <&mmc1_pins_a>;
+    vqmmc-supply = <&vdd_wifi>;
     vmmc-supply = <&reg_vcc_wifi>;
     mmc-pwrseq = <&wifi_pwrseq>;
     bus-width = <4>;
     non-removable;
     status = "okay";

-    /*
-     * Explicitly define the sdio device, so that we can add an ethernet
-     * alias for it (which e.g. makes u-boot set a mac-address).
-     */
-    xr819: sdio_wifi@1 {
-        reg = <1>;
-    };
+        xr819wifi: xr819wifi@1 {
+                reg = <1>;
+                compatible = "xradio";
+                pinctrl-names = "default";
+                interrupt-parent = <&pio>;
+                interrupts = <6 10 IRQ_TYPE_EDGE_RISING>;
+                interrupt-names = "host-wake";
+                local-mac-address = [dc 44 6d c0 ff ee];
+        };
 };

...

# modprobe xradio_wlan

xradio_wlan: loading out-of-tree module taints kernel.
  xradio_wlan mmc1:0001:1:    Input buffers: 30 x 1632 bytes
    Hardware: 7.9
    WSM firmware ver: 8, build: 43, api: 1060, cap: 0x0003
  xradio_wlan mmc1:0001:1: Firmware Label:XR_C01.08.0043 Jun  6 2016 20:41:04

results matching ""

    No results matching ""