802.11a radio on YunCore XD3200

The LEDE build for the YunCore SR3200 recognises two radios, whereas the LEDE build for the YunCore XD3200 only recognises one (the 802.11g radio). My understanding is that, in this regard, the two devices are the same and so there should be an 802.11a radio on the XD3200.

Is anyone able to provide some guidance on this?

Works for me (r2961-5b089e4).

Running sysupgrade -v -n on the build from commit 5b089e4 gives me:

/etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/qca956x_wmac'
        option htmode 'HT20'
        option disabled '1'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'LEDE'
        option encryption 'none'

iw list

Wiphy phy0
        max # scan SSIDs: 4
        max scan IEs length: 2257 bytes
        max # sched scan SSIDs: 0
        max # match sets: 0
        max # scan plans: 1
        max scan plan interval: -1
        max scan plan iterations: 0
        Retry short limit: 7
        Retry long limit: 4
        Coverage class: 0 (up to 0m)
        Device supports AP-side u-APSD.
        Device supports T-DLS.
        Available Antennas: TX 0x3 RX 0x3
        Configured Antennas: TX 0x3 RX 0x3
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
                 * P2P-client
                 * P2P-GO
                 * outside context of a BSS
        Band 1:
                Capabilities: 0x11ee
                        HT20/HT40
                        SM Power Save disabled
                        RX HT20 SGI
                        RX HT40 SGI
                        TX STBC
                        RX STBC 1-stream
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 8 usec (0x06)
                HT TX/RX MCS rate indexes supported: 0-15
                Frequencies:
                        * 2412 MHz [1] (30.0 dBm)
                        * 2417 MHz [2] (30.0 dBm)
                        * 2422 MHz [3] (30.0 dBm)
                        * 2427 MHz [4] (30.0 dBm)
                        * 2432 MHz [5] (30.0 dBm)
                        * 2437 MHz [6] (30.0 dBm)
                        * 2442 MHz [7] (30.0 dBm)
                        * 2447 MHz [8] (30.0 dBm)
                        * 2452 MHz [9] (30.0 dBm)
                        * 2457 MHz [10] (30.0 dBm)
                        * 2462 MHz [11] (30.0 dBm)
                        * 2467 MHz [12] (disabled)
                        * 2472 MHz [13] (disabled)
                        * 2484 MHz [14] (disabled)
        valid interface combinations:
                 * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, #{ IBSS } <= 1,
                   total <= 2048, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz, 40 MHz }

                 * #{ WDS } <= 2048,
                   total <= 2048, #channels <= 1, STA/AP BI must match
        HT Capability overrides:
                 * MCS: ff ff ff ff ff ff ff ff ff ff
                 * maximum A-MSDU length
                 * supported channel width
                 * short GI for 40 MHz
                 * max A-MPDU length exponent
                 * min MPDU start spacing

Also, running:

rm -f /etc/config/wireless
wifi config

gives me the same results.

I would expect there to be configured a wifi-device for the 11a radio and for their to be a corresponding wifi-iface. I would also expect there to be a second entry in the output from iw list showing the other radio.

Do I have a misunderstanding? Am I maybe doing something wrong?

Can you show output of dmesg | grep -i ath command?

Sure thing.

[    0.000000] SoC: Qualcomm Atheros QCA956X ver 1 rev 0
[    0.701949] switch0: Atheros AR8337 rev. 2 switch registered on ag71xx-mdio.0
[    1.944320] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd036, driver=Atheros AR8216/AR8236/AR8316]
[    1.955845] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:SGMII
[    7.720661] ath: EEPROM regdomain: 0x0
[    7.720678] ath: EEPROM indicates default country code should be used
[    7.720684] ath: doing EEPROM country->regdmn map search
[    7.720701] ath: country maps to regdmn code: 0x3a
[    7.720709] ath: Country alpha2 being used: US
[    7.720715] ath: Regpair used: 0x3a
[    7.735286] ieee80211 phy0: Atheros AR9561 Rev:0 mem=0xb8100000, irq=47

This doesn't look good, can you attach outputs from dmesg and opkg list-installed?

dmesg

[    0.000000] Linux version 4.4.42 (vagrant@precise64) (gcc version 5.4.0 (LEDE GCC 5.4.0 r2961-5b089e4) ) #0 Fri Jan 13 22:05:36 2017
[    0.000000] MyLoader: sysp=7abffcd5, boardp=f667c6de, parts=ffbed67f
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019750 (MIPS 74Kc)
[    0.000000] SoC: Qualcomm Atheros QCA956X ver 1 rev 0
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] No valid device tree found, continuing without
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat 8040a3d0, node_mem_map 81000000
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line:  board=XD3200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 125140K/131072K available (2964K kernel code, 156K rwdata, 752K rodata, 280K init, 200K bss, 5932K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:51
[    0.000000] Clocks: CPU:775.000MHz, DDR:650.000MHz, AHB:258.333MHz, Ref:25.000MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4932285024 ns
[    0.000006] sched_clock: 32 bits at 387MHz, resolution 2ns, wraps every 5541893118ns
[    0.008198] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.071007] pid_max: default: 32768 minimum: 301
[    0.075969] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.082949] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.092464] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.103444] NET: Registered protocol family 16
[    0.109304] MIPS: machine is YunCore XD3200
[    0.338397] registering PCI controller with io_map_base unset
[    0.352623] PCI host bridge to bus 0000:00
[    0.356989] pci_bus 0000:00: root bus resource [mem 0x12000000-0x13ffffff]
[    0.364229] pci_bus 0000:00: root bus resource [io  0x0001]
[    0.370106] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    0.377251] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.385642] pci 0000:00:00.0: [168c:003c] type 00 class 0x028000
[    0.385670] pci 0000:00:00.0: invalid calibration data
[    0.391101] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    0.391153] pci 0000:00:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[    0.391211] pci 0000:00:00.0: supports D1
[    0.391223] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    0.391409] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[    0.391438] pci 0000:00:00.0: BAR 0: assigned [mem 0x12000000-0x121fffff 64bit]
[    0.399182] pci 0000:00:00.0: BAR 6: assigned [mem 0x12200000-0x1220ffff pref]
[    0.406795] pci 0000:00:00.0: using irq 40 for pin 1
[    0.412704] clocksource: Switched to clocksource MIPS
[    0.419111] NET: Registered protocol family 2
[    0.424374] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.431729] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.438474] TCP: Hash tables configured (established 1024 bind 1024)
[    0.445261] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.451425] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.458281] NET: Registered protocol family 1
[    0.462956] PCI: CLS 0 bytes, default 32
[    0.466719] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.473276] Crashlog allocated RAM at address 0x3f00000
[    0.490150] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.496347] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.508744] io scheduler noop registered
[    0.512924] io scheduler deadline registered (default)
[    0.518512] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.525564] console [ttyS0] disabled
[    0.549398] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a 16550A
[    0.558504] console [ttyS0] enabled
[    0.566061] bootconsole [early0] disabled
[    0.577158] m25p80 spi0.0: found w25q128, expected m25p80
[    0.582801] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.587678] 4 cmdlinepart partitions found on MTD device spi0.0
[    0.593803] Creating 4 MTD partitions on "spi0.0":
[    0.598749] 0x000000000000-0x000000040000 : "u-boot"
[    0.605689] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.612494] 0x000000050000-0x000000ff0000 : "firmware"
[    0.644846] 2 uimage-fw partitions found on MTD device firmware
[    0.650969] 0x000000050000-0x000000190000 : "kernel"
[    0.657225] 0x000000190000-0x000000ff0000 : "rootfs"
[    0.663707] mtd: device 4 (rootfs) set to be root filesystem
[    0.669586] 1 squashfs-split partitions found on MTD device rootfs
[    0.676013] 0x000000370000-0x000000ff0000 : "rootfs_data"
[    0.683014] 0x000000ff0000-0x000001000000 : "art"
[    0.701949] switch0: Atheros AR8337 rev. 2 switch registered on ag71xx-mdio.0
[    1.358535] libphy: ag71xx_mdio: probed
[    1.944320] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd036, driver=Atheros AR8216/AR8236/AR8316]
[    1.955845] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:SGMII
[    1.963809] NET: Registered protocol family 10
[    1.971506] NET: Registered protocol family 17
[    1.976217] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    1.989359] 8021q: 802.1Q VLAN Support v1.8
[    2.001251] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    2.010106] Freeing unused kernel memory: 280K (8042a000 - 80470000)
[    2.879189] init: Console is alive
[    2.882932] init: - watchdog -
[    3.770404] usbcore: registered new interface driver usbfs
[    3.776209] usbcore: registered new interface driver hub
[    3.781770] usbcore: registered new device driver usb
[    3.791568] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.799623] ehci-platform: EHCI generic platform driver
[    3.807461] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    3.814965] ohci-platform: OHCI generic platform driver
[    3.824339] init: - preinit -
[    4.271138] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    4.295529] random: procd: uninitialized urandom read (4 bytes read, 7 bits of entropy available)
[    5.994306] eth0: link up (1000Mbps/Full duplex)
[    5.999272] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.389491] mount_root: jffs2 not ready yet, using temporary tmpfs overlay
[    6.399727] urandom-seed: Seed file not found (/etc/urandom.seed)
[    6.548148] eth0: link down
[    6.559671] procd: - early -
[    6.563253] procd: - watchdog -
[    7.155541] procd: - ubus -
[    7.208940] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.218621] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.228004] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.237606] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.246961] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.256430] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.265928] random: ubusd: uninitialized urandom read (4 bytes read, 12 bits of entropy available)
[    7.275556] procd: - init -
[    7.537889] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    7.554071] Loading modules backported from Linux version wt-2016-10-03-1-g6fcb1a6
[    7.561890] Backport generated by backports.git backports-20160324-9-g0e38f5c
[    7.571889] ip_tables: (C) 2000-2006 Netfilter Core Team
[    7.584334] nf_conntrack version 0.5.0 (1959 buckets, 7836 max)
[    7.617944] xt_time: kernel timezone is -0000
[    7.670255] PPP generic driver version 2.4.2
[    7.676794] NET: Registered protocol family 24
[    7.720661] ath: EEPROM regdomain: 0x0
[    7.720678] ath: EEPROM indicates default country code should be used
[    7.720684] ath: doing EEPROM country->regdmn map search
[    7.720701] ath: country maps to regdmn code: 0x3a
[    7.720709] ath: Country alpha2 being used: US
[    7.720715] ath: Regpair used: 0x3a
[    7.730432] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    7.735286] ieee80211 phy0: Atheros AR9561 Rev:0 mem=0xb8100000, irq=47
[    9.027205] random: jshn: uninitialized urandom read (4 bytes read, 15 bits of entropy available)
[    9.087869] random: jshn: uninitialized urandom read (4 bytes read, 15 bits of entropy available)
[   13.472428] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[   13.479625] jffs2_build_filesystem(): unlocking the mtd device... done.
[   13.486474] jffs2_build_filesystem(): erasing all blocks after the end marker...
[   16.635775] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   16.672145] device eth0.1 entered promiscuous mode
[   16.677157] device eth0 entered promiscuous mode
[   16.733985] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   16.813526] IPv6: ADDRCONF(NETDEV_UP): eth0.2: link is not ready
[   18.164329] eth0: link up (1000Mbps/Full duplex)
[   18.169298] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   18.200594] br-lan: port 1(eth0.1) entered forwarding state
[   18.206427] br-lan: port 1(eth0.1) entered forwarding state
[   18.212252] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.2: link becomes ready
[   18.322756] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   20.202715] br-lan: port 1(eth0.1) entered forwarding state
[   59.331064] done.
[   59.333107] jffs2: notice: (828) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   76.962727] random: nonblocking pool is initialized

opkg list-installed

base-files - 171-r2961-5b089e4
busybox - 1.25.1-2
dnsmasq - 2.76-6
dropbear - 2016.74-1
firewall - 2017-01-13-37cb4cb4-1
fstools - 2016-12-04-84b530a7-1
fwtool - 1
hostapd-common - 2016-12-19-ad02e79d-1
ip6tables - 1.4.21-2
iptables - 1.4.21-2
iw - 4.9-1
iwinfo - 2016-09-21-fd9e17be-1
jshn - 2016-11-29-77a62937-1
jsonfilter - 2016-07-02-dea067ad-1
kernel - 4.4.42-1-a19dbaad101ff4d0b3707678322b208d
kmod-ath - 4.4.42+2016-10-08-1
kmod-ath9k - 4.4.42+2016-10-08-1
kmod-ath9k-common - 4.4.42+2016-10-08-1
kmod-cfg80211 - 4.4.42+2016-10-08-1
kmod-gpio-button-hotplug - 4.4.42-2
kmod-ip6tables - 4.4.42-1
kmod-ipt-conntrack - 4.4.42-1
kmod-ipt-core - 4.4.42-1
kmod-ipt-nat - 4.4.42-1
kmod-lib-crc-ccitt - 4.4.42-1
kmod-mac80211 - 4.4.42+2016-10-08-1
kmod-nf-conntrack - 4.4.42-1
kmod-nf-conntrack6 - 4.4.42-1
kmod-nf-ipt - 4.4.42-1
kmod-nf-ipt6 - 4.4.42-1
kmod-nf-nat - 4.4.42-1
kmod-nls-base - 4.4.42-1
kmod-ppp - 4.4.42-1
kmod-pppoe - 4.4.42-1
kmod-pppox - 4.4.42-1
kmod-slhc - 4.4.42-1
kmod-usb-core - 4.4.42-1
kmod-usb-ledtrig-usbport - 4.4.42-1
kmod-usb-ohci - 4.4.42-1
kmod-usb2 - 4.4.42-1
lede-keyring - 2016-04-30-5c7857ee-1
libblobmsg-json - 2016-11-29-77a62937-1
libc - 1.1.15-1
libgcc - 5.4.0-1
libip4tc - 1.4.21-2
libip6tc - 1.4.21-2
libiwinfo - 2016-09-21-fd9e17be-1
libjson-c - 0.12.1-1
libjson-script - 2016-11-29-77a62937-1
libnl-tiny - 0.1-5
libpthread - 1.1.15-1
libubox - 2016-11-29-77a62937-1
libubus - 2016-10-12-312448a5-1
libuci - 2016-07-04-e1bf4356-1
libuclient - 2016-12-09-52d955fd-1
libxtables - 1.4.21-2
mtd - 21
netifd - 2017-01-13-52541140-1
odhcp6c - 2017-01-07-d420f493-1
odhcpd - 2017-01-06-ef3c5632-1
opkg - 2011-04-08-9c97d5ec-16
ppp - 2.4.7-10
ppp-mod-pppoe - 2.4.7-10
procd - 2017-01-10-f7069032-1
swconfig - 11
uboot-envtools - 2015.10-1
ubox - 2016-09-26-5649c028-1
ubus - 2016-10-12-312448a5-1
ubusd - 2016-10-12-312448a5-1
uci - 2016-07-04-e1bf4356-1
uclient-fetch - 2016-12-09-52d955fd-1
usign - 2015-07-04-ef641914-1
wpad-mini - 2016-12-19-ad02e79d-1

It's your custom build, am I right? Your image doesn't include ath10k kernel module.

I am building from LEDE source, but there is nothing custom. I am pulling from the LEDE git source, installing and updating the feeds, in make menuconfig setting the target as YunCore XD3200, and executing make.

I just built a version that includes kmod-ath10k and still have the same problem. Should I include anything else?

You need also firmware: ath10k-firmware-qca988x

Thank you @pepe2k that seems to have solved it!

Doesn't the target include ath10k and the corresponding firmware by default then?

no. Firmware is something that comes discreet. You have to select the firmware as per the 5GHZ Radio chipset