Id be interested to see this capability looked at.
But then you would have to implement a bare minimum IP stack on top of the wifi stack, have a way to handle IP configuration, possible gateway, plus security. And WiFi antennas are a bit more complicated than Bluetooth, as I understand it. May be if you could have a wifi module that handled most of it, it would be worth it.
What I’ve speculated about, though, is how fast can a Proffie pulse a LED, and if some form of visual light comms could be implemented. Regrettably neither LED modules nor NeoPixels have a return channel. So I abandoned that idea as worse than Bluetooth.
Wifi might be cool, but it’s neither easy, nor is it likely to make all of the things that the topic suggest possible. Let’s step through them:
- File Transfer. This is probably the easiest one. An ftp, tftp, smb or nfs server could easily be written to handle incoming and outgoing file transfers. I would probably use ftp since it’s pretty simple and less obscure than tftp.
- Firmware Upload. This is a more difficult, although there are several ways to implement it. However, almost regardless of what way is used, the wifi module is most likely going to have to be programmed specifically to support it. That means the wifi module itself would need to support arduino or similar for programming. An ESP32 wifi module could work for instance. I’m not sure if there are tool already available for doing this, or if we would just need to write our own.
- audio lag-free transmission. This is difficult. Unlike bluetooth, wifi doesn’t actually have a real-time communication channel, so the protocol has to have some amount of buffering and retransmission. The only standardized protocol I know of for sending audio over ip is RTP, but support for RTP is not commonplace, so we would probably need to implement both the sending and the receiving side, which makes it a lot of work.
At least for audio, I think a bluetooth 5.2 module would be better.
The new LC3-over-BLE mode should be excellent for low-latency audio.
Not a lot of receivers implement this yet though.