Connectivity, Revisited: What We Learned from 1.7

Hi everyone,

It’s Sunday evening here, and I’m finishing what has been a very long and difficult week. MetaGrid Pro 1.7.2 is currently in Apple review — so this feels like the right moment to sit down and write something I’ve been meaning to write for this week.

I want to talk about connectivity — and give you an honest account of what happened after 1.7 shipped.

Version 1.7 included a major rewrite of the connectivity engine. Not a polish pass. A fundamental rethink of how MetaGrid Pro discovers computers, maintains connections, and recovers from everything that can go wrong in between — sleep, wake, USB hiccups, backgrounding, network changes, and all the strange situations that happen in real-world use.

On our systems it worked very well. In some cases, better than anything we had before.

Then it went live, and within days some of you started running into instability. Crashes. Connections that wouldn’t hold. Situations that were bad enough to actually interrupt your work.

That is not okay, and I want to be direct about it.

The issue wasn’t a broken idea at the foundation. The connectivity architecture in 1.7 is genuinely better than what came before. The problem is that connectivity is by far the most complex part of MetaGrid Pro — and no matter how thorough your test environment is, there is a hard limit to how many real-world configurations you can cover before shipping.

Our decisions weren’t wrong. They were incomplete.

The logic was built on solid ground — our own systems, our beta testers, years of accumulated knowledge. What 1.7 gave us, for the first time, was data from hundreds of environments we had never seen before. Specific sleep/wake sequences, particular iPad and USB combinations, timing conditions that only surface under very specific operating-system states.

That kind of coverage is simply not possible before a public release — and the reports many of you sent made it visible.

Think about everything that sits between your iPad and your computer. Not just one computer, but thousands of Macs and PCs running different operating systems, drivers, network hardware, USB controllers, and power-management systems.

Different iPad generations. Different iPadOS versions. Different macOS and Windows versions. Different routers. Different USB chipsets. Different hubs. Different cables. Different security software. Different sleep settings. Different DAWs running in the background.

We’ve even seen cases where a cable charges reliably but behaves differently under sustained data transfer — through a hub, through a dock, or through an older USB controller.

And then there’s the logic on top of all that hardware.

Connectivity in MetaGrid Pro isn’t just “connect, send, reconnect.”

What makes this particularly challenging is that controller software lives at the boundary between devices. A DAW runs on one machine. A plug-in runs inside one process. MetaGrid Pro has to keep an iPad, MetaServer, the operating system, the network stack, USB transport, and often a professional application like Cubase, Logic Pro, Studio One, Ableton Live, or another creative tool all agreeing on the current state at the same time.

It has to know whether the Mac is actually ready after waking from sleep or just pretending to be. It has to know whether a missing USB device is gone for good or coming back in a moment. It has to know whether the server restarted, whether the network changed underneath it, whether iPadOS temporarily suspended communication, and whether the computer is awake but still locked.

It has to make dozens of decisions per session that you should never have to think about.

That’s where the complexity lives.

And some of those decisions, it turned out, needed more information than we had.

What gave us that information — and I mean this — were your logs.

The crash reports, the diagnostics, the detailed descriptions of what you were seeing. Many of you sent them, and they allowed us to observe situations that simply don’t exist in a lab.

It’s also worth saying that the logging and diagnostics work we invested in throughout the 1.6.x cycle did exactly what it was supposed to do. Both MetaGrid Pro and MetaServer captured the right information at the right moments, which allowed us to understand what was actually happening much faster than would otherwise have been possible.

We could not have found many of these edge cases without you.

Version 1.7.2 is the result of that process.

It’s not just a collection of fixes. It’s the connectivity engine with real-world knowledge it didn’t have before 1.7 shipped.

The work since release has improved USB recovery, sleep and wake handling, background restoration, connection validation, host identity tracking, and several edge cases that only became visible once the update reached a much larger audience.

Connectivity will probably always be the hardest part of this product.

It’s the place where iPadOS, macOS, Windows, USB hardware, networking, power management, MetaServer, and professional creative software all meet at once. Any of those layers can pause, delay, recreate, or lose state without warning.

The goal is that you never have to think about any of it.

Every report we received made the system better, and the connectivity engine in 1.7.2 is considerably more resilient than anything we have shipped before.

Thank you for the patience, and especially for the reports. They made 1.7.2 possible.

Now I’m pressing the Sleep my Mac button and heading out for dinner with my loved ones.

Have a great Sunday.

— Przemek

6 Likes

Excellent diagnostic review. You have a great product and a strong work ethic.

Communication with your team and the end users is what keeps the ball rolling.

Thanks for the work.

1 Like

This is why I am developing for this platform.

1 Like

@dragsquares @Gregg
Thank you for your kind words.

These kind of statements are always concerning coming from a dev. Anywho…

I’m curious - did you guys test these updates on Windows systems where WIFI is disabled, defaulting to Ethernet, and the iPads connect via wifi router? This was fine on prior versions of the app / software. It no longer works as of 1.7 / 6.0.2

From what I can tell, Metaserver looks for the Wifi connection on the Windows system, and when it sees Wifi is “disabled”, it wont’ allow any connection from the iPad. The “status” section of Metaserver specifically alerts to “Wifi is Disabled: Metagrid connects to the server via Wi-Fi by default. Turn Wi-Fi on, or connect via USB”.

Is this a known issue? I cannot get either of my iPads to connect to my PC - they can see it in “avilable computers” but I’m guessing Metaserver is having a problem with this wifi disabled situation.

Thoughts? Posting here, as the post is titled “Connectivity: What We Learned”. Seems relevant.

(EDIT: Also of note: trying to manually remove the auto detected devices, and manually add via IP address doesn’t work. Actually, it seems like a bug on both of my iPads, as I can’t even delete the auto-detected devices. Tried 100 times. They just sit there. Adding manual does nothing. Adding via QR code does nothing.)

Thanks for the report - can you please send the logs from MetaServer? And yes, all the scenarios you mentioned are covered in our regular regression and smoke tests.

Will do - I actually completely re-installed everything after switching back over to Wifi. Still not working via Wifi, so let me get back to my original setup and generate new logs after a fresh resintall. (also tried re-installing the ipad apps to no avail).

Would you prefer this be its own forum thread for this specific case? I should have done that originally.

MetaServer-Support-2026-06-23-013735.zip (12.3 KB)

These are the logs. I have been down the rabbit hole of TCP port listening, forwarding, etc., trying some forwarding options, disabling absolutely every single possible adapter that could be getting in the way. (Everything reset now). No firewall issues (tried disabling entirely), adapter issues or conflicts as far as I can tell.

I do see some potentially oddities with how Metaserver is listening / broadcasting locally vs. wifi, but not versed 100% in this so won’t assume this is the problem.

Both iPads see the Windows device (on wifi or ethernet), can detect when Metaserver is open / closed, Metaserver seems to be broadcasting and receiving correctly across the network, but just can’t seem to connect to the devices.

Have tried re-installing Metaserver, Metagrid Pro on both devices, wifi / ethernet, firewall on / off, all network adapters reset, or disabled except 1 at a time (currently Ethernet).

Tried removing, manually adding the device on the iPads, tried QR code, reboots, booting order, one iPad at a time, etc. TCP enabled disabled (currently enabled). IPv6 enabled / disabled (currently disabled). Firewall entries have been entirely deleted and then recreated.

I can’t think of anything else on my end other than - perhaps - there are some stale / obsolete network entries from the older versions that’s creating problems. Thanks for any help. :slight_smile: It’s probably something really simple I’m missing.

(Note: this was all working no problem for a couple years with version 4.x, 5.x Metaserver via loopMidi. Everything stopped working the day the app updated to a version that required Metaserver 6.0. So this is the first time I’m using both 6.0.x, Windows MIDI, and Metagrid Pro 1.7.2., although this seems to be strictly a network communication issue, not midi.)

Thanks for the detailed report and logs.

From the logs, your Windows PC is reachable over Ethernet. MetaServer is opening UDP/TCP correctly and is repeatedly sending ServerInfo responses to both iPads at 192.168.1.88 and 192.168.1.89.

So this does not look like a Windows firewall/socket failure, and Ethernet itself is a supported topology:

PC on Ethernet → router → iPad on Wi-Fi

That said, the “Wi-Fi disabled” warning in MetaServer is misleading in this case. It should not imply that the PC itself must have Wi-Fi enabled if it is already on the same LAN via Ethernet. We’ve adjusted that message for the next build.

The more important finding is that the iPads are receiving discovery data, but the final connection request is not reaching MetaServer. In the logs we see ServerInfo being sent out, but we do not see the expected ConnectRequest packet from the iPad afterward.

So the current picture is:

  • Discovery from iPad to Windows works.
  • ServerInfo reply from Windows to iPad works.
  • Ethernet LAN path appears valid.
  • The app does not complete the final connect step.
  • USB is a separate issue in your logs: Windows does not currently see any Apple USB device enumeration events.

We’re adding extra diagnostics on the Windows side so the next logs will show exactly which UDP/TCP ports MetaServer advertises and when it is waiting for the iPad’s ConnectRequest.

We are also checking the iPad-side connection logic, especially the case where the server advertises both UDP and TCP. The app should always be able to fall back to UDP if TCP does not connect.

For now, you do not need to keep chasing router/firewall settings unless your router has client isolation enabled. Your logs already prove the iPads and MetaServer can see each other on the network.

We are incorporating the fixes and diagnostics in MetaGrid Pro 1.7.3 and MetaServer 6.0.3 - should be out this week.

Great! Thanks for the detailed reply. I will definitel ylook out for the update.

Just to note, I have no USB connected at all, only Wifi. However, I did see the USB alert, so made sure Apple Devices was installed (it was but reinstalled anyway) to see if the warning would disappear (it did not).

Just another note - I did run some diagnostics to see what Metaserver was sending out using Terminal + the PID from Taskmanager for Metaserver. PID is 11080 and I get this result for "netstat -ano | findstr “11080” in Terminal:

TCP 0.0.0.0:20000 0.0.0.0:0 LISTENING 11080
TCP 127.0.0.1:56157 127.0.0.1:27015 ESTABLISHED 11080
UDP 0.0.0.0:7012 : 11080

If I understand this right (and with some Gemini help), this highlights what you were talking about, that the iPad is not reading new port assignments?

Again - thanks for the quick reply!