You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu+Mosquitto+Paho-MQTT出现invalid protocol version错误求助

MQTT客户端连接报错:invalid protocol version(mid=1)

环境信息

  • 系统:Ubuntu 18.04(运行于NVIDIA Jetson设备)
  • MQTT Broker:Mosquitto 2.0.15
  • Python客户端库:Paho-MQTT 1.6.1

问题现象

通过Python客户端向本地Mosquitto Broker发布消息时,持续收到消息标识符(mid)为1的“invalid protocol version”错误。已尝试指定MQTTv5(Broker明确支持该版本)和MQTTv31协议版本,均无法解决问题。

已完成的排查

  1. Broker状态正常:
    执行命令systemctl status mosquitto,输出显示Broker处于活跃运行状态:
mosquitto.service - Mosquitto MQTT Broker
   Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2024-01-06 19:10:01 CET; 1h 35min ago
     Docs: man:mosquitto.conf(5)
           man:mosquitto(8)
 Main PID: 22604 (mosquitto)
    Tasks: 1 (limit: 4180)
   CGroup: /system.slice/mosquitto.service
           └─22604 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Jan 06 19:10:01 gabe-desktop systemd[1]: Starting Mosquitto MQTT Broker...
Jan 06 19:10:01 gabe-desktop systemd[1]: Started Mosquitto MQTT Broker.
  1. 端口监听正常:
    执行命令netstat -at,确认1883端口在localhost和ip6-localhost上正常监听:
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:1883          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:40283         0.0.0.0:*               LISTEN     
tcp        0      0 localhost:42269         0.0.0.0:*               LISTEN     
tcp        0      0 localhost:34941         0.0.0.0:*               LISTEN     
tcp        0      0 localhost:40451         0.0.0.0:*               LISTEN     
tcp        0      0 localhost:gpsd          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:40283         localhost:47786         ESTABLISHED
tcp        0      0 gabe-desktop:35130      13.107.5.93:https       ESTABLISHED
tcp        0    108 gabe-desktop:ssh        Gabes-MBP:53006         ESTABLISHED
tcp        0      0 gabe-desktop:35140      13.107.5.93:https       ESTABLISHED
tcp        0      0 localhost:40283         localhost:47788         ESTABLISHED
tcp        0      0 localhost:47786         localhost:40283         ESTABLISHED
tcp        0      0 localhost:47788         localhost:40283         ESTABLISHED
tcp        0      0 localhost:40283         localhost:47272         CLOSE_WAIT 
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:1883      [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:gpsd      [::]:*                  LISTEN
  1. 命令行客户端测试正常:
    使用mosquitto_sub和mosquitto_pub工具测试Broker通信,功能完全正常。

  2. 已检查Mosquitto配置文件:未发现异常配置项。

Python客户端代码及错误输出

发布代码

import paho.mqtt.client as mqtt


# MQTT broker information
BROKER_ADDRESS = "localhost"
PORT = 1883
TOPIC = "testing"
RESPONSE = {
    0: "connection succeeded",
    1: "connection failed - incorrect protocol version",
    2: "connection failed - invalid client identifier",
    3: "connection failed - the broker is not available",
    4: "connection failed - wrong username or password",
    5: "connection failed - unauthorized"
}


def on_publish(client, data, mid):
    print(f"Connected to broker with status: {mid}: {RESPONSE.get(mid, 'Unknown')}")


def main():

    client = mqtt.Client(client_id="jetson", protocol=mqtt.MQTTv5)
    # Set the callback function for when the publisher connects to the broker
    client.on_publish = on_publish
    # Connect to the broker
    client.connect(BROKER_ADDRESS, PORT)

    # Publish a message to the "testing" topic
    message = "Hello, world!"
    client.publish(TOPIC, message)

    # Keep client running "forever"
    client.loop_forever()


if __name__ == '__main__':
    main()

错误输出

Connected to broker with status: 1: connection failed - incorrect protocol version

请求帮助解决该Python客户端的连接报错问题。


内容的提问来源于stack exchange,提问作者Gabe Stechschulte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:15:21