I've noticed that when you connect to at least one wiimote, if you call wiiuse_find() again it will overwrite existing connections-- more specifically, new wiimote 1 takes the slot of already connected wiimote 1 inside of wm[].
I discovered this whilst trying to implement a 24/7 connection service (like the wii), where a thread is always searching for wiimotes to connect to; After one wiimote had connected and i tried to connect a second, wiiuse just slapped the new connection over top of the connection for the first wiimote :-\.
I think when calling wiiuse_find() is should preserve existing connections rather than blanking them.
The fix for this should be pretty simple, in wiiuse_find() as it assigns addresses to wm[x] you have it first check that wm[x] is not already discovered, and if so find one that isn't.
I've patched
io_nix.c to do the above, its a
basic implementation, still has things i've missed (like not resetting the bt address at the start of wiiuse_find(), etc, etc) ... but, it does allow you to find and connect to more wiimotes whilst you are already connected to some.