esp8266-aws_iot icon indicating copy to clipboard operation
esp8266-aws_iot copied to clipboard

Attempting MQTT connection...failed, rc=-2 try again in 5 seconds

Open gunnicus opened this issue 7 years ago • 12 comments

Hi, I'm using NodeMCU (ESP-12E Module). ESP8266 2.5.0-Beta1, Certificates are copied correctly.

This is the error I'm getting : Attempting MQTT connection...failed, rc=-2 try again in 5 seconds

Here is the output:

SDK:3.0.0-dev(c0f7b44)/Core:2.5.0-beta1=20499901/lwIP:STABLE-2_1_2_RELEASE/glue:1.0-4-gc434c6f/BearSSL:2398cc6 sta config unchangedscandone wifi evt: 2 scandone state: 0 -> 2 (b0) state: 2 -> 3 (0) state: 3 -> 5 (10) add 0 aid 3 cnt

connected with OPTUSV943A48, channel 6 dhcp client start... wifi evt: 0 ......ip:192.168.0.12,mask:255.255.255.0,gw:192.168.0.1 wifi evt: 3 .Attempting MQTT connection...[hostByName] request IP for: a234567hlux1-ats.iot.us-east-1.amazonaws.com [hostByName] Host: a234567hlux1-ats.iot.us-east-1.amazonaws.com IP: 34.206.182.75 :ref 1 BSSL: Connection will fail, no authentication method is setup:wr 250 0 :wrc 250 250 0 :ack 250 :rn 536 :rd 5, 536, 0 :rdi 536, 5 :rd 531, 536, 5 :rdi 531, 531 :c0 531, 536 :rn 1072 :rd 1072, 1072, 0 :rdi 536, 536 :c 536, 536, 1072 :rdi 536, 536 :c0 536, 536 :rn 536 :rd 536, 536, 0 :rdi 536, 536 :c0 536, 536 :rn 1072 :rd 1072, 1072, 0 :rdi 536, 536 :c 536, 536, 1072 :rdi 536, 536 :c0 536, 536 :rn 1072 :rd 1072, 1072, 0 :rdi 536, 536 :c 536, 536, 1072 :rdi 536, 536 :c0 536, 536 :rn 536 :rd 536, 536, 0 :rdi 536, 536 :c0 536, 536 :rn 525 :rd 525, 525, 0 :rdi 525, 525 :c0 525, 525 failed, rc=-2 try again in 5 seconds

gunnicus avatar Dec 21 '18 09:12 gunnicus

I ran into this problem myself.

Follow the guide here: http://www.fhilitski.com/2016/09/connecting-mqtt-fx-to-aws-iot/ and make sure that you can connect to your IoT cloud using MQTT.fx . (Make sure to set permissions on the certificate properly, and also be sure to activate the certificate)

Use the AWS CA1: https://www.amazontrust.com/repository/AmazonRootCA1.pem

Then uncomment the line espClient.setCACert(certificates_esp8266_bin_CA, certificates_esp8266_bin_CA_len);

Change the AmazonRootCA1.pem to a DER, then hex. Add it into your code, and you should be good to go.

reidkersey avatar Jan 24 '19 22:01 reidkersey

hey @reidkersey I'm trying to connect with broker with this( by CA certificate ) way but getting the same " Attempting MQTT connection...failed, rc=-2 try again in 5 seconds " I'm using CA, RSA, Key all file which you ask in .der I tried with hex code way too but the connection is still open.

Double check that you are using CA1. Post your code as well.

reidkersey avatar Feb 07 '19 23:02 reidkersey

hey @reidkersey I'm using this code to connect Azure IOT Hub, I just want your confirmation that Can i connect ? or this code is only for AWS IOT!

I have generated .der file from .pem file and check this code(MQTT_x509_DER), also I have generated .der file from .pem file and .hex code from .der file and check code(MQTT_x509_bin). but found same error. " Attempting MQTT connection...failed, rc=-2 try again in 5 seconds "

I will share my code soon. Let me verify it once again. I feel that my privatekey.pem is not perfectly converted in key.der so can you help me on that point too Meanwhile, please review my above sentences.

I can only guarantee that it works with AWS, because that is all that I have tried it with, and all that I am familiar with. I also haven't reviewed the code base to see if there is any AWS specific code.

That said, I don't see any obvious reasons why what works with AWS would not also work with Azure.

On Fri, Feb 8, 2019, 01:11 CShekhar Suthar <[email protected] wrote:

hey @reidkersey https://github.com/reidkersey I'm using this code to connect Azure IOT Hub, I just want your confirmation that Can i connect ? or this code is only for AWS IOT!

I have generated .der file from .pem file and check this code(MQTT_x509_DER), also I have generated .der file from .pem file and .hex code from .der file and check code(MQTT_x509_bin). but found same error. " Attempting MQTT connection...failed, rc=-2 try again in 5 seconds "

I will share my code soon. Let me verify it once again. Meanwhile, please review my above sentences.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/copercini/esp8266-aws_iot/issues/14#issuecomment-461701889, or mute the thread https://github.com/notifications/unsubscribe-auth/AVzZXuAzBDCfWop6oUc_qgxiR6y8iWg9ks5vLRUBgaJpZM4ZdrNa .

reidkersey avatar Feb 08 '19 06:02 reidkersey

hello @reidkersey @gunnicus @copercini I'm testing your MQTT_x509_bin example too with HEX code of CA certificate and CRT and KEY too but getting the same error " Attempting MQTT connection...failed, rc=3 try again in 5 seconds " can you give me same advise to connect that connection And please try with Azure cloud (IoT HUB)

Set the certs like this: espClient.setCertificate(certificates_esp8266_bin_crt, certificates_esp8266_bin_crt_len); espClient.setPrivateKey(certificates_esp8266_bin_key, certificates_esp8266_bin_key_len); espClient.setCACert(certificates_esp8266_bin_CA, certificates_esp8266_bin_CA_len);

The certs should be an array that looks like this: unsigned char certificates_esp8266_bin_key[] = { 0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, ....};

reidkersey avatar Feb 15 '19 18:02 reidkersey

Set the certs like this: espClient.setCertificate(certificates_esp8266_bin_crt, certificates_esp8266_bin_crt_len); espClient.setPrivateKey(certificates_esp8266_bin_key, certificates_esp8266_bin_key_len); espClient.setCACert(certificates_esp8266_bin_CA, certificates_esp8266_bin_CA_len);

The certs should be an array that looks like this: unsigned char certificates_esp8266_bin_key[] = { 0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, ....};

Hey @reidkersey I already used that way too and I mention that in my previous message that: """ Serial.println( espClient.setCACert(certificates_esp8266_bin_CA, certificates_esp8266_bin_CA_len)); Serial.println( espClient.setCertificate(certificates_esp8266_bin_crt, certificates_esp8266_bin_crt_len)); Serial.println( espClient.setPrivateKey(certificates_esp8266_bin_key, certificates_esp8266_bin_key_len)); """ I get all three respond "True" from espClient.setCACert(), espClient.setCertificate(), espClient.setPrivateKey()

but next I get that error " Attempting MQTT connection... ESPnodemcu failed, rc=3 try again in 5 seconds.

Hey, I'm having the same issues when trying to connect to AWS.

Can you share your ESP8266 Configuration? (Upload speed, etc.) I don't see any other problem, I've been trying to do this for quite a while.

Thank you

DiogoVigo avatar Feb 20 '19 16:02 DiogoVigo

Hey, I'm having the same issues when trying to connect to AWS. Can you share your ESP8266 Configuration? (Upload speed, etc.) I don't see any other problem, I've been trying to do this for quite a while.

Thank you

@DiogoVigo

Board : -> NODEMCU 1.0 (ESP - 12E Module) Flash Size: -> 4M (1M SPIFFS) CPU Frequency: -> 80/ 160 MHz ( use both ) Debug Port: -> Disabled Debug Level: -> SSL/ TLS_MEM/ SSL+TLS_MEM (use all three) lwP Variant: -> v2 Lower Memory VTables: -> Flash Upload Speed: -> 115200 Erase Flash: -> Only Sketch Port: -> /dev/ttyU...

update back here if you got any path or solution to publish the data

I have faced the above issue but after using the help from this tutorial finally I am able to sort out all the issues https://raphberube.com/blog/2019/02/18/Making-the-ESP8266-work-with-AWS-IoT.html ..

Aqsa44 avatar Mar 05 '19 05:03 Aqsa44

Help plz. I'm getting this same "rc=-2" error. I'm using the most recent example, and a set of certs converted to DEM that I've tested, it's connecting to wifi and loading the private key and certs fine, but then showing this error.

Here is my code: mqtt_x509_DER.ino.txt

And the console log output: log.txt

I'm able to test my certs and connection by manually publishing a message on a topic with the same certs using: mosquitto_pub --cert 75cb57542f-certificate.pem.crt --key 75cb57542f-private.pem.key --cafile AmazonRootCA1.pem -h a1ybm1dzxx22hk-ats.iot.us-west-2.amazonaws.com -p 8883 -t 'testing' -q 1 -m '{"message": "Hello World"}'

And I converted the crypto files with: openssl rsa -inform PEM -outform DER -text -in 75cb57542f-private.pem.key -out private.der openssl x509 -outform der -in 75cb57542f-certificate.pem.crt -out cert.der openssl x509 -outform der -in AmazonRootCA1.pem -out ca.der

Board = Generic ESP8266 Module Flash Frequency = 80 MHz Upload Speed = 115200 Flash Size = 1MB (128KB SPIFFS)

Using an ESP-01 with 1MB FLASH

noahcoad avatar Sep 30 '19 05:09 noahcoad