[OpenWrt-Devel] [PATCH] ar71xx: add support for the UniFi AP Outdoor Plus

John Crispin blogic at openwrt.org
Sun Jan 18 01:54:05 EST 2015



On 30/12/2014 06:01, Matthias Schiffer wrote:
> I had read the mails regarding the issue and I've asked about it
> in #openwrt-devel (but didn't get an answer yet). I didn't try
> changing the channel though as I'm in a very noisy environment
> (WLAN-wise) at the moment, so I can't really do any proper
> testing.
> 
> If it's only a GPIO issue, I could look at it, but I don't know
> enough about ath9k to do more complex fixes. Unfortunately, I don't
> have the device anymore, so I can't perform further tests myself.
> 

can this wrong / missing GPIO cause permanent damage the SoC/wmac ?








> 
> On 12/30/2014 05:42 AM, David Hutchison wrote:
>> Does the new kernel / ath9k address the RF Filter on this board?
>> I came up with an old patch for this board, but whenever I
>> changed the channel inside OpenWRT the signal would just
>> disappear. The RF Filter has to be toggled somehow ( I assume
>> it's a GPIO of some sort ). I am just curious on how it was
>> fixed, or if it's still an issue.
>> 
>> -- Davey
>> 
>> On Mon, Dec 29, 2014 at 8:01 PM, Matthias Schiffer 
>> <mschiffer at universe-factory.net> wrote:
>>> Signed-off-by: Matthias Schiffer
>>> <mschiffer at universe-factory.net> --- 
>>> target/linux/ar71xx/base-files/etc/diag.sh         |  3 ++ 
>>> target/linux/ar71xx/base-files/lib/ar71xx.sh       |  3 ++ 
>>> .../ar71xx/base-files/lib/upgrade/platform.sh      |  2 + 
>>> target/linux/ar71xx/image/Makefile                 |  3 +- 
>>> .../610-MIPS-ath79-openwrt-machines.patch          |  3 +- 
>>> .../patches-3.14/616-MIPS-ath79-ubnt-xw.patch      | 61
>>> +++++++++++++++++++++- 6 files changed, 72 insertions(+), 3
>>> deletions(-)
>>> 
>>> diff --git a/target/linux/ar71xx/base-files/etc/diag.sh
>>> b/target/linux/ar71xx/base-files/etc/diag.sh index
>>> 06b96a3..30e4aeb 100755 ---
>>> a/target/linux/ar71xx/base-files/etc/diag.sh +++
>>> b/target/linux/ar71xx/base-files/etc/diag.sh @@ -254,6 +254,9
>>> @@ get_status_led() { uap-pro) status_led="ubnt:white:dome" ;; 
>>> +       unifi-outdoor-plus) +
>>> status_led="ubnt:white:front" +               ;; airgateway) 
>>> status_led="ubnt:white:status" ;; diff --git
>>> a/target/linux/ar71xx/base-files/lib/ar71xx.sh
>>> b/target/linux/ar71xx/base-files/lib/ar71xx.sh index
>>> 9b056e9..a12101a 100755 ---
>>> a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++
>>> b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -732,6 +732,9
>>> @@ ar71xx_board_detect() { *"UniFiAP Outdoor") 
>>> name="unifi-outdoor" ;; +       *"UniFiAP Outdoor+") +
>>> name="unifi-outdoor-plus" +               ;; *WP543) 
>>> name="wp543" ;; diff --git
>>> a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>>> b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index
>>> 6dabf4e..2752729 100755 ---
>>> a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++
>>> b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@
>>> -368,6 +368,7 @@ platform_check_image() { return 1 ;;
>>> 
>>> +       unifi-outdoor-plus | \ uap-pro) [ "$magic_long" !=
>>> "19852003" ] && { echo "Invalid image type." @@ -483,6 +484,7
>>> @@ platform_do_upgrade() { om5p) platform_do_upgrade_openmesh
>>> "$ARGV" ;; +       unifi-outdoor-plus | \ uap-pro) 
>>> MTD_CONFIG_ARGS="-s 0x180000" default_do_upgrade "$ARGV" diff
>>> --git a/target/linux/ar71xx/image/Makefile
>>> b/target/linux/ar71xx/image/Makefile index 18c9637..3eb2f07
>>> 100644 --- a/target/linux/ar71xx/image/Makefile +++
>>> b/target/linux/ar71xx/image/Makefile @@ -1333,6 +1333,7 @@
>>> $(eval $(call
>>> SingleProfile,TPLINK-LZMA,64kraw,SMART-300,smart-300,SMART-300,tty
>>>
>>> 
$(eval $(call
SingleProfile,TPLINK-LZMA,64kraw,OOLITE,oolite,GS-OOLITE,ttyATH0,115200,0x3C000101,1,16Mlzma))
>>> 
>>> $(eval $(call
>>> SingleProfile,UAPPRO,64k,UAPPRO,ubnt-uap-pro,UAP-PRO,ttyS0,115200,BZ,BZ,ar934x))
>>>
>>> 
+$(eval $(call
SingleProfile,UAPPRO,64k,UBNTUNIFIOUTDOORPLUS,ubnt-unifi-outdoor-plus,UBNT-UOP,ttyS0,115200,BZ,BZ,ar7240))
>>> 
>>> $(eval $(call
>>> SingleProfile,UBDEV,64kraw,UBDEV01,ubdev01,UBNT-UF,ttyS0,115200,XM,XM,ar7240))
>>>
>>>
>>> 
@@ -1396,7 +1397,7 @@ $(eval $(call MultiProfile,TLWR941,TLWR941NV2
TLWR941NV3 TLWR941NV4 TLWR941NV6))
>>> $(eval $(call MultiProfile,TLWR1043,TLWR1043V1 TLWR1043V2)) 
>>> $(eval $(call MultiProfile,TLWDR4300,TLWDR3500V1 TLWDR3600V1
>>> TLWDR4300V1 TLWDR4300V1IL TLWDR4310V1 MW4530RV1)) $(eval $(call
>>> MultiProfile,TUBE2H,TUBE2H8M TUBE2H16M)) -$(eval $(call
>>> MultiProfile,UBNT,UBNTAIRROUTER UBNTRS UBNTRSPRO UBNTLSSR71
>>> UBNTBULLETM UBNTROCKETM UBNTNANOM UBNTNANOMXW UBNTLOCOXW
>>> UBNTUNIFI UBNTUNIFIOUTDOOR UAPPRO UBNTAIRGW)) +$(eval $(call
>>> MultiProfile,UBNT,UBNTAIRROUTER UBNTRS UBNTRSPRO UBNTLSSR71
>>> UBNTBULLETM UBNTROCKETM UBNTNANOM UBNTNANOMXW UBNTLOCOXW
>>> UBNTUNIFI UBNTUNIFIOUTDOOR UBNTUNIFIOUTDOORPLUS UAPPRO
>>> UBNTAIRGW)) $(eval $(call MultiProfile,WNDR3700,WNDR3700V1
>>> WNDR3700V2 WNDR3800 WNDR3800CH WNDRMAC WNDRMACV2)) $(eval
>>> $(call MultiProfile,WNR612V2,REALWNR612V2 N150R)) $(eval $(call
>>> MultiProfile,WP543,WP543_2M WP543_4M WP543_8M WP543_16M)) diff
>>> --git
>>> a/target/linux/ar71xx/patches-3.14/610-MIPS-ath79-openwrt-machines.patch
>>> b/target/linux/ar71xx/patches-3.14/610-MIPS-ath79-openwrt-machines.patch
>>>
>>> 
index 4ce9268..b01c5de 100644
>>> ---
>>> a/target/linux/ar71xx/patches-3.14/610-MIPS-ath79-openwrt-machines.patch
>>>
>>> 
+++ b/target/linux/ar71xx/patches-3.14/610-MIPS-ath79-openwrt-machines.patch
>>> @@ -1,6 +1,6 @@ --- a/arch/mips/ath79/machtypes.h +++
>>> b/arch/mips/ath79/machtypes.h -@@ -16,22 +16,145 @@ +@@ -16,22
>>> +16,146 @@
>>> 
>>> enum ath79_mach_type { ATH79_MACH_GENERIC = 0, @@ -119,6 +119,7
>>> @@ ATH79_MACH_UBNT_UAP_PRO,        /* Ubiquiti UniFi AP Pro */ 
>>> ATH79_MACH_UBNT_UNIFI,          /* Ubiquiti Unifi */ 
>>> ATH79_MACH_UBNT_UNIFI_OUTDOOR,  /* Ubiquiti UnifiAP Outdoor */ 
>>> ++      ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS, /* Ubiquiti UnifiAP
>>> Outdoor+ */ ATH79_MACH_UBNT_XM,             /* Ubiquiti
>>> Networks XM board rev 1.0 */ +      ATH79_MACH_WHR_G301N,
>>> /* Buffalo WHR-G301N */ +      ATH79_MACH_WHR_HP_G300N,
>>> /* Buffalo WHR-HP-G300N */ diff --git
>>> a/target/linux/ar71xx/patches-3.14/616-MIPS-ath79-ubnt-xw.patch
>>> b/target/linux/ar71xx/patches-3.14/616-MIPS-ath79-ubnt-xw.patch
>>>
>>> 
index 3675518..8e16697 100644
>>> ---
>>> a/target/linux/ar71xx/patches-3.14/616-MIPS-ath79-ubnt-xw.patch
>>>
>>> 
+++ b/target/linux/ar71xx/patches-3.14/616-MIPS-ath79-ubnt-xw.patch
>>> @@ -1,6 +1,65 @@ --- a/arch/mips/ath79/mach-ubnt-xm.c +++
>>> b/arch/mips/ath79/mach-ubnt-xm.c -@@ -332,3 +332,78 @@ static
>>> void __init ubnt_uap_pro_setup(vo +@@ -186,6 +186,19 @@ static
>>> struct gpio_led ubnt_unifi_outdoo +       } + }; + ++static
>>> struct gpio_led ubnt_unifi_outdoor_plus_leds_gpio[] __initdata
>>> = { ++      { ++              .name           =
>>> "ubnt:white:front", ++              .gpio           = 1, ++
>>> .active_low     = 0, ++      }, { ++              .name
>>> = "ubnt:blue:front", ++              .gpio           = 0, ++
>>> .active_low     = 0, ++      } ++}; ++ ++ + static void __init
>>> ubnt_unifi_setup(void) + { +       u8 *mac = (u8 *)
>>> KSEG1ADDR(0x1fff0000); +@@ -245,6 +258,38 @@
>>> MIPS_MACHINE(ATH79_MACH_UBNT_UNIFI_OUTDO +            "Ubiquiti
>>> UniFiAP Outdoor", +            ubnt_unifi_outdoor_setup); + ++ 
>>> ++static void __init ubnt_unifi_outdoor_plus_setup(void) ++{ ++
>>> u8 *mac1 = (u8 *) KSEG1ADDR(0x1fff0000); ++      u8 *mac2 = (u8
>>> *) KSEG1ADDR(0x1fff0000 + ETH_ALEN); ++      u8 *ee = (u8 *)
>>> KSEG1ADDR(0x1fff1000); ++ ++      ath79_register_m25p80(NULL); 
>>> ++ ++      ath79_register_mdio(0, ~(UBNT_UNIFIOD_PRI_PHYMASK | 
>>> ++                               UBNT_UNIFIOD_2ND_PHYMASK)); 
>>> ++ ++      ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0); 
>>> ++      ath79_init_mac(ath79_eth1_data.mac_addr, mac2, 0); ++
>>> ath79_register_eth(0); ++      ath79_register_eth(1); ++ ++
>>> ap91_pci_init(ee, NULL); ++ ++
>>> ath79_register_leds_gpio(-1,
>>> ARRAY_SIZE(ubnt_unifi_outdoor_plus_leds_gpio), ++
>>> ubnt_unifi_outdoor_plus_leds_gpio); ++ ++
>>> ath79_register_gpio_keys_polled(-1,
>>> UBNT_XM_KEYS_POLL_INTERVAL, ++
>>> ARRAY_SIZE(ubnt_xm_gpio_keys), ++
>>> ubnt_xm_gpio_keys); ++} ++ 
>>> ++MIPS_MACHINE(ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS, "UBNT-UOP", 
>>> ++           "Ubiquiti UniFiAP Outdoor+", ++
>>> ubnt_unifi_outdoor_plus_setup); ++ ++ + static struct gpio_led
>>> ubnt_uap_pro_gpio_leds[] __initdata = { +       { +
>>> .name           = "ubnt:white:dome", +@@ -332,3 +377,78 @@
>>> static void __init ubnt_uap_pro_setup(vo 
>>> MIPS_MACHINE(ATH79_MACH_UBNT_UAP_PRO, "UAP-PRO", "Ubiquiti
>>> UniFi AP Pro", ubnt_uap_pro_setup);
>>> 
>>> -- 2.2.1 _______________________________________________ 
>>> openwrt-devel mailing list openwrt-devel at lists.openwrt.org 
>>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
>>> 
> 
> 
> 
> _______________________________________________ openwrt-devel
> mailing list openwrt-devel at lists.openwrt.org 
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list