|
| 1 | +# Testing compatibility of WiFi and Ethernet object |
| 2 | + |
| 3 | +## WiFi |
| 4 | + |
| 5 | +The WiFi tests are [WiFiTest](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/WiFiTest/WiFiTest.ino) and [WiFiScanNetwork](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/WiFiScanNetworks/WiFiScanNetworks.ino) from the NetApiHelpers library. Tested are functions of the `WiFi` object. |
| 6 | + |
| 7 | +### WiFiNINA |
| 8 | + |
| 9 | +With listed pull requests [applied](https://github.com/JAndrassy/WiFiNINA/tree/all_fixes), only issue is the reversed `macAddress` and `BSSID` for compatibility with the older Arduino WiFi libraries. |
| 10 | + |
| 11 | +pull requests: |
| 12 | + |
| 13 | +* [added dnsIP(n)](https://github.com/arduino-libraries/WiFiNINA/pull/251) |
| 14 | +* [auto dns, gw, mask](https://github.com/arduino-libraries/WiFiNINA/pull/219) |
| 15 | +* [rejoin with DHCP](https://github.com/arduino/nina-fw/pull/91) (nina-fw PR) |
| 16 | + |
| 17 | +### WiFi101 |
| 18 | + |
| 19 | +With listed pull requests [applied](https://github.com/JAndrassy/WiFi101/tree/all_fixes), remaining issues are |
| 20 | + |
| 21 | +* Doesn't have `setDNS()`. It is not simple to add it. |
| 22 | +* Requires `WiFi.end()` to repeat `begin`. With `WiFi.disconnect()` next `begin` hangs. |
| 23 | +* reversed ordering of bytes returned by `macAddress`, `BSSID` and `BSSID(n)` for compatibility with the first Arduino WiFi library |
| 24 | + |
| 25 | +pull requests: |
| 26 | + |
| 27 | +* [added dnsIP(n)](https://github.com/arduino-libraries/WiFi101/pull/344) |
| 28 | +* [setHostname alias](https://github.com/arduino-libraries/WiFi101/pull/337) |
| 29 | +* [auto dns, gw, mask](https://github.com/arduino-libraries/WiFi101/pull/326) |
| 30 | +* [added WiFi.h](https://github.com/arduino-libraries/WiFi101/pull/321) |
| 31 | +* [`begin` fix](https://github.com/arduino-libraries/WiFi101/pull/324) |
| 32 | + |
| 33 | +### WiFiS3 |
| 34 | + |
| 35 | +With listed pull request applied, remaining issues are |
| 36 | + |
| 37 | +* WiFi.h doesn't include WiFiClient.h |
| 38 | +* after using static IP, DHCP is not possible. The problem in the ESP32 WiFi library used in the firmware ([PR](https://github.com/espressif/arduino-esp32/pull/8848)). |
| 39 | +* hostname is not sent with DHCP request |
| 40 | + |
| 41 | +pull requests: |
| 42 | +* [fix auto dns IP](https://github.com/arduino/ArduinoCore-renesas/pull/173) |
| 43 | +* [reversed MAC](https://github.com/arduino/ArduinoCore-renesas/pull/183) |
| 44 | + |
| 45 | + |
| 46 | +### WiFiEspAT |
| 47 | + |
| 48 | +As the WiFiEspAT library is maintained by the author of this document, all problems discovered with the tests were solved. Only issue is the reversed macAddress and BSSID for compatibility with Arduino WiFi libraries. |
| 49 | + |
| 50 | + |
| 51 | +## Ethernet |
| 52 | + |
| 53 | +The test is [LegacyEthernetTest](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/LegacyEthernetTest/LegacyEthernetTest.ino) from the NetApiHelpers library. Tested are functions of the `Ethernet` object. |
| 54 | + |
| 55 | +### Ethernet |
| 56 | + |
| 57 | +With listed pull requests applied, remaining issues are |
| 58 | + |
| 59 | +* `hardwareStatus()` and `linkStatus()` don't work before `begin()` |
| 60 | +* doesn't have `Ethernet.end()` |
| 61 | + |
| 62 | +pull requests: |
| 63 | + |
| 64 | +* [setHostname](https://github.com/arduino-libraries/Ethernet/pull/233) |
| 65 | +* [hostByName](https://github.com/arduino-libraries/Ethernet/pull/232) |
| 66 | + |
| 67 | + |
| 68 | +### STM32Ethernet |
| 69 | + |
| 70 | +Test was not run. Compilation problems: |
| 71 | + |
| 72 | +* doesn't have `hardwareStatus` |
| 73 | +* doesn't have `setDnsServerIP` |
| 74 | +* doesn't have `setHostname` |
| 75 | +* doesn't have `end()` |
| 76 | +* doesn't have `hostByName` |
| 77 | + |
| 78 | + |
| 79 | +### EthernetENC |
| 80 | + |
| 81 | +As the EthernetENC library is maintained by the author of this document, all problems discovered with the test were solved. |
| 82 | + |
| 83 | + |
| 84 | +## LwIP WiFi + Ethernet |
| 85 | + |
| 86 | +### ESP8266 WiFi |
| 87 | + |
| 88 | +Differences: |
| 89 | + |
| 90 | +* `begin` is async. `status = WiFi.waitForConnectResult();` can be used to wait |
| 91 | + |
| 92 | +Issues: |
| 93 | + |
| 94 | +* doesn't have auto configuration for DNS, gw, mask for static IP |
| 95 | +* doesn't have WiFi.h |
| 96 | + |
| 97 | + |
| 98 | +### ESP8266 Ethernet |
| 99 | + |
| 100 | +With listed pull request applied, remaining issues are |
| 101 | + |
| 102 | +* hardwareStatus() and linkStatus() don't work before begin() |
| 103 | +* doesn't have `hostForName` |
| 104 | + |
| 105 | +pull requests: |
| 106 | + |
| 107 | +* [end() and re-begin](https://github.com/esp8266/Arduino/pull/9023) |
| 108 | + |
| 109 | + |
| 110 | +### ESP32 WiFi |
| 111 | + |
| 112 | +Differences: |
| 113 | + |
| 114 | +* `begin` is async. `status = WiFi.waitForConnectResult();` can be used to wait |
| 115 | +* ScanNetworks - encryptionType enum has different constants than other WiFi libraries |
| 116 | +* `disconnect` is asynchronous. Without waiting for status change after it, it can interfere with immediately following `begin` |
| 117 | + |
| 118 | +Issues: |
| 119 | + |
| 120 | +* `config` has wrong ordering of parameters |
| 121 | +* doesn't have auto configuration for DNS, gateway, net mask for static IP |
| 122 | + |
| 123 | + |
| 124 | +### ESP32 Ethernet |
| 125 | + |
| 126 | +ESP32 Arduino platform Ethernet library is too different to run the test. |
| 127 | + |
| 128 | + |
| 129 | +### Mbed Core WiFi |
| 130 | + |
| 131 | +Test was not run. Detected problems are: |
| 132 | + |
| 133 | +* doesn't have `setHostname` (MbedSocketClass) |
| 134 | +* reversed ordering of bytes returned by `macAddress`, `BSSID` and `BSSID(n)` for compatibility with older Arduino WiFi libraries |
| 135 | + |
| 136 | +pull requests: |
| 137 | + |
| 138 | +* [`dnsIP(n)`](https://github.com/arduino/ArduinoCore-mbed/pull/756) |
| 139 | + |
| 140 | + |
| 141 | +### Mbed Core Ethernet |
| 142 | + |
| 143 | +Issues are |
| 144 | + |
| 145 | +* `hardwareStatus()` and `linkStatus()` before `begin` cause `begin` to fail |
| 146 | +* `setDnsServerIP` applies the DNS IP only in `begin`. immediate call to `dnsServerIP` returns the previous value used with `begin` |
| 147 | +* doesn't have `setHostname` (MbedSocketClass) |
| 148 | +* `MACAddress` returns reversed ordering of bytes [issue](https://github.com/arduino/ArduinoCore-mbed/issues/752) |
| 149 | + |
| 150 | +### C33 WiFi |
| 151 | + |
| 152 | +With listed pull requests applied, remaining issues are |
| 153 | + |
| 154 | +* hostname is not sent with DHCP request |
| 155 | +* doesn't have WiFi.h |
| 156 | +* does scan in `begin` and only joins the network if it is in the scan result |
| 157 | + |
| 158 | +pull requests: |
| 159 | + |
| 160 | +* [`config` ignored](https://github.com/arduino/ArduinoCore-renesas/pull/179) |
| 161 | +* [reversed MAC](https://github.com/arduino/ArduinoCore-renesas/pull/184) |
| 162 | + |
| 163 | +### C33 Ethernet |
| 164 | + |
| 165 | +Test was not run. Compilation problems: |
| 166 | + |
| 167 | +* doesn't have `setHostname` |
| 168 | +* doesn't have `setDnsServerIP` |
| 169 | +* doesn't have `Ethernet.end()` |
| 170 | +* doesn't have Ethernet.h |
| 171 | +* doesn't have `hostByName` |
| 172 | +* `MACAddress` doesn't have the parameter |
0 commit comments