Not sure what you mean by "ports"? Do mean pins? As far as top speed usage, that depends on the application and is subjective. The pico is using one SPI port and the Teensy 4.1 is using one SDIO port out of twoDo you really need that many ports as seen on the last picture?
Wlan is just something like a tool.
Pico does only need one port as far as I know!
If this is meant for general use, then using only a minimum of ports would be better than top speed!
Sorry, Christof
SDIO has 6 pins - 4 data line, a clock line and a command line.Meant port pins, but it is 4 of them, while there seem to be 8 port pins blocked in the picture above.
Of course this is my very personal opinion, and this is not at all my project. I only chimed in, because I have been one of those, who voted for WLAN, but this is going into a wrong direction for me. More free port pins are more valuable than the additional speed.
View attachment 39039
Yes, @KurtE pulled DOCS and wrote code for 2nd SDIO usage as noted in p#79 - available WiFi chips are no longer SPI but SDIO.8 port pins
// SPDX-FileCopyrightText: (c) 2024-2025 Shawn Silverman <shawn@pobox.com>
// SPDX-License-Identifier: AGPL-3.0-or-later
// driver_select.h chooses a driver header to include.
// This file is part of the QNEthernet library.
#pragma once
#include "qnethernet_opts.h"
// --------------------------------------------------------------------------
// External Driver
// --------------------------------------------------------------------------
// First check for the existence of an external driver
// https://forum.pjrc.com/index.php?threads/new-lwip-based-ethernet-library-for-teensy-4-1.68066/post-345539
#if defined(__has_include)
// https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005finclude.html
#if __has_include(<qnethernet_external_driver.h>)
#include "qnethernet/drivers/qnethernet_external_driver.h"
#define QNETHERNET_INTERNAL_DRIVER_EXTERNAL
#endif // __has_include(<qnethernet_external_driver.h>)
#endif // defined(__has_include)
// --------------------------------------------------------------------------
// No External Driver
// --------------------------------------------------------------------------
// Don't include anything else if an external driver has been included
#ifndef QNETHERNET_INTERNAL_DRIVER_EXTERNAL
#if defined(QNETHERNET_DRIVER_W5500)
#include "qnethernet/drivers/driver_w5500.h"
#define QNETHERNET_INTERNAL_DRIVER_W5500
#endif
#if ARDUINO_TEENSY41_CYW4343W
#include "qnethernet/drivers/driver_CYW4343W.h"
#define QNETHERNET_INTERNAL_DRIVER_CYW4343W
#elif defined(ARDUINO_TEENSY41)
#include "qnethernet/drivers/driver_teensy41.h"
#define QNETHERNET_INTERNAL_DRIVER_TEENSY41
#else
#include "qnethernet/drivers/driver_unsupported.h"
#define QNETHERNET_INTERNAL_DRIVER_UNSUPPORTED
#endif // Driver selection
#endif // QNETHERNET_INTERNAL_DRIVER_EXTERNAL
// Disables T41 native ethernet IF and enables T41 and CYW4343W IF.
#ifndef ARDUINO_TEENSY41_CYW4343W
#define ARDUINO_TEENSY41_CYW4343W 1
#endif
Starting...
[Start]
Starting Ethernet with DHCP...
driver_has_hardware
===========================
CYW4343W Card::begin: SDIO2
===========================
Attaching OOB interrupt to pin 34
Enabled CYW4343W bus high speed interface
BUS_IORDY_REG (Ready indication) returned OK
SDHC bus set to 4-bit, speed set to 33MHz
*************
CardID: 43430
*************
Set SRAM_IOCTRL_REG validated
Set SRAM_IOCTRL_REG second validation
Set SRAM_RESETCTRL_REG validated
Uploading firmware data
Uploaded firmware, 419798 of 419798 bytes
Uploading NVRAM data
Uploaded NVRAM, 680 of 680 bytes
Set BAK_CHIP_CLOCK_CSR_REG validated
Set BUS_IORDY_REG validated
Configuring WL_IRQ OOB
==============================
End W4343WCard::begin: SDIO2
==============================
EthernetClass::start()
enet_init()
driver_init
Uploading CLM, size: 7222
CLM uploaded 7222/7222 result: 1
CLM version API: 12.2
Data: 9.10.39
Compiler: 1.29.4
ClmImport: 1.36.3
Creation: 2020-02-16 22:32:13
Initialization Done
In joinNetworks
WiFi CPU running
Set country succesfully
Join events enabled
Joining network wswn
driver_set_mac
driver_get_mac
driver_get_mac
MAC = 70:87:a7:10:64:b5
********************* LINK Established *********************
********************* Joined Network ***********************
Yes, that is the right '1DX' chip. You have TWO variants it seems. One wired to SD Socket adapter - ignore that for now. [this could work but would require altering the code to move to alternate SDIO and adding the INT wire IIRC]correct stuff
// wiring used from prior post: Viewed chipside up header connector to the left
INT (34) WL_ON (33)
CMD (22) CLK (23)
D0 (40) D2 (17)
D1 (41) D3 (16)
GND 3.3v
Finding docs isn't easy and the effort not entirely fruitful to date in any way - until @wwatson posted latest!protocol document
Collection from prior efforts here in DOCS: https://github.com/Defragster/NXP_1062_MurataWiFiall of the docs for the CYW4343W/9 that we collected on your GitHub?
Thanks @defragster. I found all of it on one of my desktops. It is a huge amount of useful and probably not so useful info. I'll try to get it all in a repo on GitHub...Finding docs isn't easy and the effort not entirely fruitful to date in any way - until @wwatson posted latest!
The WWatson github links to this: https://iosoft.blog/2022/12/06/picowi/
> there are lots of nested links from there that might get you to something usable?
Collection from prior efforts here in DOCS: https://github.com/Defragster/NXP_1062_MurataWiFi
That came from following nested links like above.
// 1 == Disable T41 native ethernet IF and enable T41 CYW4343W IF.
// 0 == Enable T41 native ethernet IF and disable T41 CYW4343W IF.
#ifndef ARDUINO_TEENSY41_CYW4343W
#define ARDUINO_TEENSY41_CYW4343W 1
#endif
// The secrets file
// SSID
#define MY_SSID "testSSID"
//PASSPHRASE
#define MY_PASSPHRASE "testPASSPHRASE"
// Security settings: 0 for none, 1 for WPA_TKIP, 2 for WPA2
// The hard-coded password is for test purposes only!!!
#define SECURITY 2
Months of work you mention, that is amazing. I am so happy to see that this now works, I need to order WiFi chips, I sent all off to you guys. But I still have 1DX and 1YN in stock so I'll order in a few PCB's so I can test this out myself.Well, with the help of @shawn I have an initial working version of QNEthernet for the CYW4343xI only have the 1DX version of the chip to test with so it will be interesting to see if the 1YN? version works as well. I found the the QNEthernet version of "simplePing.ino" and "ping.ino" would not work as designed with the CW4343W. I determined that I would have to change code deep in the QNEthernet library. That did not make sense as I was able to modify and use the existing ping sketch from the CYW4343W library. I did the same thing with the scan sketch. Both of those are in the QNEthernet examples folder named "cyw43_ping.ino" and "cyw43_scan.ino". The ping sketch resembles the "simplePing.ino" in QNEthernet examples which just prints out the round trip time. Eventually I want to do a ping sketch that prints out more of the ICMP echo info. I have tested most all of the QNEthernet example sketches. Some of them I have no idea what they are trying to do. Those will have to be tested by others with that knowledge.
I have set this version of the library to be able to use wired Ethernet to WIFI by changing 1 define in "QNEthernet_opts.h":
Code:// 1 == Disable T41 native ethernet IF and enable T41 CYW4343W IF. // 0 == Enable T41 native ethernet IF and disable T41 CYW4343W IF. #ifndef ARDUINO_TEENSY41_CYW4343W #define ARDUINO_TEENSY41_CYW4343W 1 #endif
To use the examples with the wifi card you must first edit the "QNEthernet/src/qnethernet/drivers/cyw4343w/src/secrets.h" file:
These are used to link and join the network (not part of QNEthernet).Code:// The secrets file // SSID #define MY_SSID "testSSID" //PASSPHRASE #define MY_PASSPHRASE "testPASSPHRASE" // Security settings: 0 for none, 1 for WPA_TKIP, 2 for WPA2 // The hard-coded password is for test purposes only!!! #define SECURITY 2
In an effort to be the least invasive I could, there is only two modified QNEthernet files, two added files and one added directory. This makes it easier to upgrade to newer versions of the QNEthernet version updates. I know @shawn does regular updates to QNEthernet so this makes it easy to add in the WIFI portion. At least for now.
I probably will not put much more effort into this until there is more meaningful movement hardware wise and user wise. I have now spent months getting to this point with the CYW4343x software. Will be nice to see others with the various hardware doing some testing. The code is not optimized or clean and will probably remain that way until testing is done.
The library is found here...
You also have a WiFi chip right? Would be nice if you could test it out. It will take weeks before I have one to test myself.Very cool @wwatson and @Dogbone06 !!! The ReadMe alone looks like an LARGE amount of work!
Indeed, hardware in short supply. @PaulStoffregen collected a series of commercial variants, not sure where that is in the queue,
Connections documented prior page of this thread as used on the T_4.1 with 'raw' @Dogbone06 board: https://forum.pjrc.com/index.php?threads/call-to-arms-teensy-wifi-true.77099/post-366611
Only the single raw, not the SD adapter, version of hardware here with the 1DX for any testing.
Okay - kudos to @shawn for that on QNEthernet then - that explains not seeing any hardware connect or details specific to 1DXReadMe is @shawns ReadMe
Yes, See link in p#96 that hardware is here and was used for early testing Mar 19, 2026.You also have a WiFi chip right?
INT (34) WL_ON (33)
CMD (22) CLK (23)
D0 (40) D2 (17)
D1 (41) D3 (16)
GND 3.3v
## PINOUT:
TEENSY 4.1 WIFI Board
- 23 --------> clk
- 22 --------> cmd
- 17 --------> D2
- 16 --------> D3
- 41 --------> D1
- 40 --------> D0
- 34 --------> INT
- 33 --------> WL_ON