I use the upload function in xLights and my setup is similar to jnealand and it works great. (I have used the wired setup as well and didn't have any problems) I am all wireless, Pi connected to F16, F8PB, PocketScroller, Pi with Pihat. For things to work, you have to have your setup tab with your E1.31 networks setup with the correct universes and Controller IP. That way xLights know what universes go to which controller. Then you can daisy chain all of your models for each controller starting with channel 1 of the first Universe for the first model and each subsequent model's start channel will be after the previous model. Then when you get to the next controller, start a new series of Universes (I use 100 for the first controller, 200 for the second, etc.) Then you simply tell each model what port of the controller it is connected to. You have 2 steps to the upload from the Setup page. First you upload the E1.31 input definitions and then you upload the output channels. It is actually very simple for me. I can make changes and upload and they work. Here are some screenshots to hopefully help. If you have physical models daisy chained to your controller, then make sure you daisy chain them in the same order in xLights. And you will enter the same port connection for all the models and xLights will adjust the start channels automagically in the controllers when you upload. Add a Model, just add it in xLights, do the 2 uploads and your controller is now configured!
If you see, my F16 uses the 100 series universes (100-115) and my next controller used the 200 series universes (200-203). My Megatree's start channel is Universe 100, Channel 1 and I setup the Megatree to be 8 strings with 4 strings per strand (32 strand tree). 8 strings means that it is going to use 8 ports. I set the port connection to 1 and because xLights knows that Universes 100-119 belong to my F16 and that it is going to use ports 1-8 it has all the information it needs to upload.