"unknown main tag item 0x0" comes from the HID layer, it has nothing to do with Bluetooth or connection stability. It's usually a stray NUL character at the end of the HID descriptor which the kernel safely ignores but still logs. In my own driver development (xpadneo), I just shorten the HID descriptor by one byte if it ends with NUL because the devices I work with are known to NUL-terminate their HID descriptors.
Maybe the kernel should do the same: If the last HID descriptor byte is a NUL-byte, it should simply shorten the HID descriptor by one byte, essentially cutting the offending byte off, and the message would be gone. Other than a log message, it has no consequences in the kernel, it comes from a completely different layer that's not related to Bluetooth at all.
"unknown main tag item 0x0" comes from the HID layer, it has nothing to do with Bluetooth or connection stability. It's usually a stray NUL character at the end of the HID descriptor which the kernel safely ignores but still logs. In my own driver development (xpadneo), I just shorten the HID descriptor by one byte if it ends with NUL because the devices I work with are known to NUL-terminate their HID descriptors.
Maybe the kernel should do the same: If the last HID descriptor byte is a NUL-byte, it should simply shorten the HID descriptor by one byte, essentially cutting the offending byte off, and the message would be gone. Other than a log message, it has no consequences in the kernel, it comes from a completely different layer that's not related to Bluetooth at all.