The software is looking at the wrong pointer for the info from the hardware. You need to supply the proper info for the software, probably in the config file and then restart the whole thing, that will solve the problem. It is not a big deal and only takes a minute of two.
The data is hardcoded into the miner when it's built, you can probably check the cgminer from ckolivas and check the antminers headers there (although D3 is not there)
So the software is not getting wrong pointers, it's just badly made, like whenever there is a connection error to one of the pools, the PIC temperature error is thrown, because the ASIC's are kind of reset or something, and even the fans spin up for no reason, bad coding.
Or if there is no work from the pool (can happen), same things happen.
Just check the kernel log and you'll find this pattern