I am my end device is sending confirmed uplink messages. I am looking at device lorawan frames and the ack is always false for the messages. Is this the correct behavior? I was thinking ack would be set to true.
Plus I see the corresponding downlink is unconfirmed downlink message. Thanks in advance.
Yes, this is correct. the ACK indicates the acknowledged of a confirmed data frame. So in response of an uplink confirmed frame you would see a downlink frame with ack = true.
So the confirmed updata will have ack false,
then its corresponding downlink or DataDown should have ack=true (yes that’s happening). But why is that downlink called unconfirmedDataDown. Should it not be called confirmedDataDown?
No, as that would require the device to ACK the ACK if the same would be true for a device ACKing a downlink. Please refer to the LoRaWAN specs for more information on this.