IPRO6S¶
IPRO6S is a RISC-V SoC with built-in Wi-Fi 6. It builds from the same SDK tree and with the same toolchain as IPRO7. V2.2.1 ships three IPRO6S Wi-Fi applications: ipro6_demo for stand-alone networking, ipro6_if_wifi to bridge Wi-Fi to a host processor over SDIO or USB, and ipro6_fmac, FullMAC firmware for a Linux host. On the IPRO7AI Reef EVK the IPRO6S is the FIN Wi-Fi card in the microSD slot, which gives the IPRO7AI its network connection over SDIO.
--chipname when flashingChip specifications¶
| Item | IPRO6S |
|---|---|
| Core | RISC-V RV32IMAFC with DSP extensions |
| Wireless | Built-in Wi-Fi 6 |
| NPU / ISP | None |
| RTOS | FreeRTOS V11 |
| Reference boards | IPRO6S EVK (contact INTELPRO); the FIN card on the Reef |
| Region | Size | Base address | Notes |
|---|---|---|---|
| Flash | 2 MB | 0x13000000 |
|
| TCM RAM | 320 KB | 0x11000000 |
Code and data; 280 KB in the reduced layout |
| Wi-Fi RAM | 160 KB | 0x21050000 |
|
| HBN RAM | 4 KB | 0x20090000 |
IPRO6S applications select the chip with these settings; their images carry the chip suffix IPRO6:
CONFIG_IPRO6=y
CONFIG_CHIP="IPRO6"
CONFIG_CPU_ID="intelpro_ipro7" # same toolchain as IPRO7
CONFIG_FREERTOS_SUPPORT=y
SDK support in this release¶
| Item | V2.2.1 |
|---|---|
| Applications | ipro6_demo, ipro6_if_wifi, ipro6_fmac (apps/platform/) |
| Wi-Fi 6 | MAC (components/wireless/macsw), fhost API, wpa_supplicant and lwIP adapter (components/wireless/wifi6), RF driver (components/wireless/rf/ipro6_rf); all prebuilt per application configuration |
| Low power | The DTIM low-power firmware image bsp/hal/lp_framework/ipro6/prebuilt/ipro6_lpfw.bin, embedded by the low-power configurations |
| Bluetooth | The IPRO6S Bluetooth controller libraries and dual-mode (BR/EDR) applications are not included in V2.2.1; contact INTELPRO. The IPRO6S applications in this release use Wi-Fi only |
| Zephyr RTOS | The ipro6s_evb board files are included, but IPRO6S is not supported under Zephyr in this release |
| Flashing | IntelProCube 0.7.0.1 or later, command-line tool, with --chipname ipro6; the flash action of build_freertos.sh handles IPRO7 only |
Applications and configurations¶
Each IPRO6S application picks its configuration with DEFCONFIG=. The table lists the build-verified configurations; an application's .config is a copy of its first configuration.
| Application | Configuration | What it does |
|---|---|---|
ipro6_demo |
defconfig_ipro6_lpwifi |
Wi-Fi 6 station and soft-AP, lwIP, shell, plus DTIM power save |
defconfig_ipro6_lp |
Low-power demo without Wi-Fi | |
ipro6_if_wifi |
defconfig_ipro6_sdio |
Wi-Fi 6 bridge: the host processor sees an Ethernet-like interface over SDIO; the firmware of the Reef's FIN card |
defconfig_ipro6_usb |
The same over USB | |
defconfig_ipro6_lp |
Low-power demo without Wi-Fi | |
ipro6_fmac |
defconfig_ipro6_fmac |
FullMAC firmware for a Linux cfg80211 host (image ipro6s_fmac.img); the default of make |
defconfig_ipro6_fmac_loader |
The flash loader that receives the FullMAC firmware over SDIO or USB |
ipro6_demo/defconfig_ipro6_lpwifi_pingandipro6_fmac/defconfig_ipro6_fmac_apset noCONFIG_WIRELESS_LIB_VARIANTand are not among the verified configurations; contact INTELPRO before using them.- The Linux host driver for
ipro6_fmacis not included in V2.2.1. - The three applications target the IPRO6S EVK (
CONFIG_BOARD="EVB"); on the Reef, onlydefconfig_ipro6_sdioofipro6_if_wifiruns, on the FIN card.
Build¶
Run from the SDK root; the FIN card firmware as an example:
At the end of the build the linker prints flash and RAM usage, and the image is apps/platform/ipro6_if_wifi/build_ipro6_sdio/build_out/ipro6_if_wifi_IPRO6.bin. The output directory is build_ plus the configuration name without defconfig_. The Makefile of ipro6_fmac passes DEFCONFIG=defconfig_ipro6_fmac by default, so a plain make there also builds into build_ipro6_fmac/. build_freertos.sh -d defconfig_ipro6_sdio build ipro6_if_wifi builds as well, but it cannot flash an IPRO6S.
Wi-Fi libraries and custom configurations¶
The Wi-Fi MAC, fhost, wpa_supplicant, lwIP adapter and RF driver are prebuilt once per application configuration, in each component's lib/<app>-<config>/, and selected by the configuration's CONFIG_WIRELESS_LIB_VARIANT. For defconfig_ipro6_sdio:
For a custom configuration, keep the Wi-Fi options of one of the configurations above and its CONFIG_WIRELESS_LIB_VARIANT; the prebuilt libraries exist only for those.
ipro6_demo chooses how RAM is split between the Wi-Fi buffers and the application heap with one of CONFIG_WIFI_MEM_PROFILE_PERF (default), _BALANCED and _APP. Add one line to the configuration to switch, then delete the build directory and build again. Free heap and throughput for each profile are in apps/platform/ipro6_demo/profile_selection_readme.md.
Flash and verify on the board¶
This walk-through uses an IPRO6S EVK with an IPRO Debug Probe: build ipro6_demo, flash it, and see a Wi-Fi scan on the console. IPRO6S images are flashed with the IntelProCube command-line tool and --chipname ipro6; the flash action of build_freertos.sh does not apply.
You need:
- An IPRO6S EVK, a 2.4 GHz antenna, an IPRO Debug Probe with its UART cable, and a USB-C power source.
- The toolchain, installed as in Set Up Your Host, and SDK V2.2.1 (written
<SDK>below). - IntelProCube 0.7.0.1 or later: download it, check its SHA-256 and extract it to a new folder as its README describes (written
<IntelProCube>below). Images flashed with 0.7.0 do not boot; see Flashing succeeds but the board does not boot.
-
Build: in the
<SDK>root, runWhen it finishes, the linker prints the use of each memory region; the
flashline reads about:The image is
apps/platform/ipro6_demo/build_ipro6_lpwifi/build_out/ipro6_demo_IPRO6.bin. -
Connect: connect the antenna to RF1 (u.FL) on the EVK. Connect the UART cable of the IPRO Debug Probe to J_UART on the EVK, and the probe to the computer over USB. Power the EVK through USB-C; LED1 lights up.
-
Find the serial port: in
<IntelProCube>, run (on Linux./ipro_iot_tool_linux, on Windowsipro_iot_tool.exe; the same below)The probe shows two ports. The one marked
(IPRO_U), whose name ends in02, is the UART: use it for flashing and for the console.(IPRO_C)is the chip debug port. macOS lists names that start with/dev/tty.; use the matching port that starts with/dev/cu., for example/dev/cu.usbmodemXXXX02. -
Flash:
./ipro_iot_tool_macos --chipname ipro6 --chip-variant IPRO6S \ --port /dev/cu.usbmodemXXXX02 --baudrate 2000000 \ --pt chips/ipro6/partition/partition_cfg_fw_direct.toml \ --firmware <SDK>/apps/platform/ipro6_demo/build_ipro6_lpwifi/build_out/ipro6_demo_IPRO6.binThe tool puts the chip into download mode through the probe, writes and verifies the image, and resets the chip, in about 15 seconds. Only
[All Success]at the end of the output means success; the tool exits 0 even when it fails.partition_cfg_fw_direct.tomlplaces the firmware at flash address 0x0 without boot2 and keeps the partition table in the last two sectors. -
Check the boot: open the same port at 115200 baud (8N1, no flow control), then press RESET (SW2) on the EVK.
The boot messages end with:
-
Check Wi-Fi: type
stack_wifi; whenCODE_WIFI_ON_MGMR_DONEappears, typewifi_scan.ipro />stack_wifi ... [APP] [EVT] CODE_WIFI_ON_INIT_DONE ... [APP] [EVT] CODE_WIFI_ON_MGMR_DONE ipro />wifi_scan [APP] [EVT] CODE_WIFI_ON_SCAN_DONE ... index[00]: channel 01, bssid XX:XX:XX:XX:XX:XX, rssi -20, ... auth WPA2-PSK, cipher: AES, SSID <ssid>Each nearby access point takes one line (up to 50 lines; unused ones show
empty). If access points are listed, the radio and the Wi-Fi stack work. Runstack_wifionce per boot. -
Check the soft-AP: start an access point; the key is 8 to 63 characters.
ipro />wifi_ap_start -s IPRO6S_AP -k <key> -c 6 [WPA] AP-ENABLED [APP] [EVT] CODE_WIFI_ON_AP_STARTEDJoin
IPRO6S_APfrom a computer or phone with that key. It gets an address in 192.168.169.0/24 from the board, which is 192.168.169.1, and the console printsAP-STA-CONNECTEDwith its MAC address.wifi_ap_stopstops the access point.
Enter download mode by hand¶
The tool enters download mode through the DL line of the probe. With a plain USB-to-UART cable, or when the tool reports a handshake failure, enter download mode by hand and then run the flash command: hold BOOT (SW1), press RESET (SW2), release BOOT. In download mode the console prints nothing; after flashing, press RESET to boot normally. Close any terminal program that holds the serial port (for example screen) before flashing, or the tool cannot open the port.
Flashing succeeds but the board does not boot¶
The IPRO6 boot header timing in IntelProCube 0.7.0 does not suit IPRO6S parts with the 2 MB in-package flash: the output ends with [All Success], but after a reset the console stays silent and the chip stays in download mode. Use 0.7.0.1 or later, extracted to a new folder. If you extracted 0.7.0.1 over a 0.7.0 folder that has been used, delete chips/ipro6/img_create_iot/efuse_bootheader_cfg.ini first: the tool creates it from the template on its first run and never updates it. IPRO SDK Online Setup 3.6.0 and earlier install IntelProCube 0.7.0; install 0.7.0.1 separately to flash an IPRO6S.
The FIN Wi-Fi card on the Reef¶
The FIN card puts an IPRO6S on an SD-card-shaped edge. It plugs into the Reef's microSD slot, works as an SDIO slave and is powered from the slot's SD_VDD. The IPRO7AI is the main SoC and runs the application, AI, BLE, audio and the IP stack; the IPRO6S on the card runs ipro6_if_wifi (defconfig_ipro6_sdio) and provides the wireless link.
flowchart LR
A["IPRO7AI (Reef)<br/>application + ipronet_host + lwIP"] -- "SDIO 4-bit (microSD slot)" --> B["IPRO6S FIN card<br/>ipro6_if_wifi"]
B -- "Wi-Fi 6" --> C["Access point"]
On the IPRO7AI, the host component components/network/ipronet_host drives the card through the SD host (GPIO28–33) and presents the link as the lwIP network interface iproeth0. Reef applications that use it:
| Application | Configuration | What it does |
|---|---|---|
ipro7ai_reef_demo |
defconfig_wifi_ipro6s |
Wi-Fi connection and an RTSP camera stream at rtsp://<ip>:8554/av0_0 |
ipro_agora_sentino |
.config |
Sentino cloud voice chat, online through the FIN card |
With JP3 on GPIO, GPIO14 switches the slot's power and fin cycle power-cycles the card. For the connection and streaming steps see IPRO7AI Reef EVK and Wi-Fi and RTSP streaming.
Update the FIN card firmware¶
The defconfig_wifi_ipro6s build of ipro7ai_reef_demo offers two ways:
-
Update over Wi-Fi: the FIN firmware (
defconfig_ipro6_sdiosetsCONFIG_RNM_OTA=y) accepts the IPRO6 OTA packageFW_OTA.bin.xz.otamade by IntelProCube. Put the package on an HTTP server the Reef can reach, for example by running this in the package's directory: -
Connect and update from the Reef console:
The card writes the package to its firmware partition, checks it with SHA-256, reboots and boot2 installs it; this takes about 30–60 seconds. On success the console prints
[ota] RESULT OK; on failure[ota] RESULT ERR rc=…and the phase that failed. Onlyhttp://is supported.
The other way is ipro6_dl at the Reef console: it powers the card off, drives the SD_D0 (GPIO29) download strap high and powers it on again, so the IPRO6S starts in BROM download mode. Flashing then goes through the IPRO6S's UART with --chipname ipro6; how to reach that UART on the FIN card is not covered in this release's documentation, contact INTELPRO. ipro6_rst power-cycles the card back into a normal boot, and ipro6_pwr 0|1 switches its power by hand.
Related documents¶
- IPRO7: how IPRO7 connects to networks.
- IPRO7AI Reef EVK: the FIN card, JP3 and the Wi-Fi commands.
- Networking guide: lwIP, Ethernet and the SDIO Wi-Fi host.
components/network/ipronet_host/README.md: the host API and the OTA flow.