HTTPS support on Pico!

Posted on
Page
of 6
  • Is AWS IoT example works with WIZnet ethernet adapter only ?
    I am trying to use it with ESP8266 attached to Pico and always stuck on the TLS phase

    I tried even to provision Elliptic Curve keys and certificate (that are smaller), but still with no success. I don't think it is even attempting to initiate TLS connection with given CA, cert, and key options.

    >echo(0);
    =undefined
    Connecting to WiFi
    Connected
    192.168.15.68
    >Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    ERROR: Failed! mbedtls_ssl_setup returned -0x7f00
    ERROR: Unable to create socket
    
  • Yes, I think it's only WIZnet that works at the moment (at least with in-built keys).

    I believe -0x7f00 is the out of memory error (the ESP8266 driver takes up too much RAM right now).

    You could try adding an SD card and loading the keys from that, like in Luke's example.

  • Hi Gordon

    Unfortunately even from SD card I am getting -0x7f00.

     1v84 Copyright 2015 G.Williams
    >echo(0);
    =undefined
    Connecting to WiFi
    Connected
    192.168.15.68
    Connecting with TLS...
    Loading the CA root certificate...
    Loading certificate file: "certs/rootCA.pem"
    Loading the Client certificate...
    Loading certificate file: "certs/cert.pem"
    Loading the Client Key...
    Loading certificate file: "certs/key.pem"
    ERROR: Failed! mbedtls_ssl_setup returned -0x7f00
    ERROR: Unable to create socket
    > 
    

    Are you planning to release a board with more RAM ? It is amazing what you can do with this little board.
    Also do you thing the memory requirements to work with CC3000 is less than ESP8266? Should I try CC3000?

  • Argh, that's a shame. Yes, CC3000 will require less RAM, but it's also less reliable. If you can use Ethernet via the WIZnet board I'd recommend that, as it's rock solid, and is what this was working on.

    Just a quick hack, but can you try adding: global["\xFF"].history = []; at the end of your uploaded code and see if that helps at all?

    I'm thinking quite seriously about making an Espruino board with a chip with more RAM and an ESP8266 module on the back. That would probably be a good option for this?

    There are still some firmware changes I can make that would improve the situation, and should still get the Pico working with HTTPS on ESP8266.

  • Finally, HTTPS on Pico with ESP8266 now works!

    You just need one of the latest builds - or the changes will be in 1v85 when it is released.

    The trick is to store the variables in flash memory, and to then use memoryArea to reference them. You could probably load from a connected SD card too if you needed to.

    The following code runs, with 1300 JsVars (out of 5100 total) free right in the middle of the HTTPS request, so there's actually a reasonable amount of space left over for your code, although not masses.

    It looks like TLS/HTTPS takes around 3000 variables just to run, and potentially more when it's setting up a connection.

    // The 128kB of flash memory on Pico that's not supposed to exist :)
    var addr = process.memory().flash_start + process.memory().flash_length;
    print("Address 0x"+addr.toString(16));
    // flash memory module
    var flash = require("Flash");
    // Erase all data in that flash page
    flash.erasePage(addr);
    
    /* This writes data to flash, and returns a 'memoryArea' -
    a reference to the actual bytes in flash*/
    function fwrite(data) {
      var len = data.length;
      while (data.length&3) data+="\xFF";
      var a = addr;
      flash.write(data, addr);
      addr += data.length;
      return E.memoryArea(a,len);
    }
    
    // Load up the key, certificates, etc
    var options = url.parse("https://192.168.1.50:443");
    options.key = fwrite( atob("MIIEogIBAAKCAQEAwcBeteXIax0S+gNFv4f0K+q4LOv/E7kmiT8IvZl85NvUDF/slro/x/EreRMGmjcxoeT7+U62nrVu07lZhc+WAiluBX6Ykb2h7lJ/1M3MKV4uK5Yq92p1MxVXzYhVbCKBmcKrPu7Od+hLIMLIMTu0zwc23cE4tSUP4WV38BAzol3k9Rhd1MIjdZ3QUBTYYrvPveUv1TCdsQNsAGv5ZhJx57Anm52W7jTzwBw1O4cn31TD0KD3US/yDKL2IH7BSBFiadN5AzBJbh/ch16/aOfUBIlKNZf9LofMOVLxNm9hxpP2vgckl9u9nTtWiCR5EmKZaTqTqN7bsoLkNKR1GJ6yBwIBIwKCAQAQm3XVE7IXz0rE+PdZj09xeoTQpoOT+e1cOJpZZO1ys8G36vcFmu+GKp1ThUm1cnH37w5Ikbfht8erv24SyKZ1NsBJnSMFLYLoirp/9GH06tDB6EzTYOV5aDq52HxZudCYJqD2xAMRl5FpNURb/c2rWGPJ3Vyhz/oMAWINQzegM8in120G0ZmEnbdvdDWivWKJ4Ap1/fqiWr6yBLbG7gKnLkU3PksQG0YtTahSGXdfEPAi7+CIcRi8svM2Agecm7DH3MW/pgHY8JX87psAmgqCONyVqcAiBlBwQrIk59pczKuzCOSp66STM5S7pXwIuWz/YDJPaGPIL8U/GAyQvJxjAoGBAPfc71FJNg+pKvQMUybGutDtACkexYBNVInpkAKBtGszPjN8xVmmh9huHj+zooFSxQPB2FmsNW7i69pf09FFFgf2tDL22BcG9VldpJR8l77EVw2arovoKC1TyCWxNvD+LYA6VIdd0OXUfUIXG9RGnnnNmHplO5IQ4ka2KI3XEuBtAoGBAMgcrRSRVBTBQtWEyz/cCivdrzdV2AaoNtv5+k0o2pJrViHvrCbhGZNBc/R0u4s3dM53L2IX0w065LD1PeyKjaFXZO2lx3Iu3lf4L8U6oEVQ8C8eLQUOwJ8dK1fWp304Z/iwStwmTa0TZE05KKhl+31NlSOlNr2CHfWeY1So81vDAoGBAKn2lXmRSaRWvl40VkZ5pKyFQfBPnV9K+CQN3xepZcXZ/sQ4TM/CpktEMf/LoqHSWzXGwD19ZnfsD3ErxHI+AHp9SF12EITRkkvocNrZF5jBJcAvjaHDw8dPZKwhv0YqotuVtk4xs9DMOKJY/SPYpy7zYT38RhsEQ2OwG8754Q7rAoGASlPLQidZvpDs8DijQ5rfNN1PtXeoAnj+bvZy6XWTAy8unuP+HRHHq7k5spHCAIJP9Opwr2fvTg6PdO1gJKh9v5V9QlOEmCAJcSGrV+KTTPItU1RZ3U6fUQrVlaeACfBhIdsUfafTtVBYdHRQ7hdAJzoS0rm1PxMScSwzhdhaY+kCgYEAtpWlQzz7u+lurGKbKZY1cTPiFprA9PIsCtl0A5PdQ1XPnYfBgVAlB26oF9ubNy8VxpoerT7VlfILOSBRHx4n2VaUe/7iyZX4yNC+J8zKyLLq8ea0GC76d/masFMuWvZcuOk0afnBZ4VffGUxYMdjP8CEWFJjYjJpsWzW3uWB2ek="));
    options.cert = fwrite( atob("MIIFijCCA3KgAwIBAgIJAJhrfxuduldTMA0GCSqGSIb3DQEBCwUAMIGBMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTUExDzANBgNVBAcTBkJvc3RvbjETMBEGA1UEChMKRXhhbXBsZSBDbzEQMA4GA1UECxMHdGVjaG9wczELMAkGA1UEAxMCY2ExIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1wbGUuY29tMB4XDTE1MTEyNzEyMjM1NloXDTE4MDgyMjEyMjM1NlowgYYxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpFeGFtcGxlIENvMRAwDgYDVQQLEwd0ZWNob3BzMRAwDgYDVQQDEwdjbGllbnQxMSAwHgYJKoZIhvcNAQkBFhFjZXJ0c0BleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANEmBWwVwLrRcIzF2Juu45tfP0CO88/80QlBMZPPAT7HbIo1YLeBGy3d12LxywT8/1zGlsxxA5xJS1wumUE3xIOAZRZG++6JshstfNPvUNbmIFNNvr3cKpppWX7rPqK39/cKniBaoLLl6RaYrIuBDcgL1Pofs5XbdsPk92fn82KyDrpyYzuI6KNjWMTtyoIDiC8vftY9JeL+IMAVQ3s+oNdxQiE1sU252BSDVXymGxoKDs8+EpbCnTkU8HdffZ4o7rWFEj9FzM/PgZmNF9c2YLsLLlh3QmMxZhfXdMmElgfCbK54uKsujFFxQI+whX2gwy1qeWkJBywSpj7g4SDizIN8jXetT5J4r/zSURKwlMeboZdUd5fs1us4JtN0Ba2D7Tch+cKenyM/iRo3HPVXvsL2FA4cuEdEwOM8kADeZqIO9yrfp3rNsKkEY/a8e96jLniRx1DD9Csk8xvXk95UBTAuSZeg3oGFPBALa6XK3PKLd1EHm4un9DO2TvgaypfSIudz0hXqapOavxz2IyOyqigpJqDR9fXe9WKa3oD0fwS5SgBmcjmy/73JTDDiv4fgCztLPZgSftMPNBy3HDJxyf1uRVyOOMebL4jfxVrgM/kIzMSz4YSMGazKLknKz9x6PtEmjEeVlJNAmoXmT6zXA9N+4+kUanG6XE2IrvD+MfnrAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAAPv3w4KVca2vZeaPN4kHb7ln1ZkXimZ/jZYJMdFh0xcwnTgGQiW+P2voIJuA1GsrrdLvD27RnV1UKtDbJT+MZB5nM/mt7BMyQKdHEGy1YFFLFQz4YMaUEoif5OXFFnmunEu76C90qwbxBpUiS3lB97Gipy3VDBJKFE2kYaypYJc0XqIJcnypzsLBU/K9Bl13Xvj7QNN2VyqDGKlw6v6UJWRyYT7efqvvJ5Ljglmdn1UxX+WmfLzKtO+aMBoSuOgyFEttLLKESYXYRRcomfCRxqIH3XA3PzyDEN5R/wG38IQD3Y0Zt+UYabS6qUKtD2jMD8dL1gr7NWLraDSPAre2fBbHtjskr8vyR5PjrBFLJWOzEQKzclxW3O6cmZKyjwd092JuNn+FSjgo/glWik8jyFXJzK5bLXgGFa31YFnrmWKDrxbAWCuJL6UcRx4rX9qdPkZpwPTqN1sEh1YqdZShxDTFjbxDrE8gL5xbo62q9bdzbN/TMzhVo1BYvQytt7MbX2ZEXDXOup2QiOs23MqcQsf3yjT25OD5V9w3NWXDcd+TLsNCdKFnY+EpWOe4qs7k4UuXJMcW/zAPPBZDPEBsi+AAYsNYEo8QdsCcNtiWD818fTjHR6nmNRsMjRH9jeM9x0N/fJvsuCrrMQZF5KNpntOP0lV1ktAIcjQJUf93rN+"));
    options.ca = fwrite( atob("MIIFgDCCA2gCCQD1KANs3obrTjANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ8wDQYDVQQHEwZCb3N0b24xEzARBgNVBAoTCkV4YW1wbGUgQ28xEDAOBgNVBAsTB3RlY2hvcHMxCzAJBgNVBAMTAmNhMSAwHgYJKoZIhvcNAQkBFhFjZXJ0c0BleGFtcGxlLmNvbTAeFw0xNTExMjcxMjIyMzFaFw00MzA0MTMxMjIyMzFaMIGBMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTUExDzANBgNVBAcTBkJvc3RvbjETMBEGA1UEChMKRXhhbXBsZSBDbzEQMA4GA1UECxMHdGVjaG9wczELMAkGA1UEAxMCY2ExIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwjlJ3eyrnGIiJiplY5mvIaaoMC20oR4Jx5+FOXNJJhjSz9mOoqcpEe2U6ZmmVfcpc8zdt1f9KkED5yjzpnF02CG+KYaRs/Rfj0NJejcpBN3Hn4R6+yJek2rYrKi4uZyMZrWx/8PTp/lEypAEBf/2vX9WYNgi5eWyHeHEfJ4yucRI1UgRw5W/RLYoAePAPT1ekB66NbosBIZhRXJvjqED/jOMOlpHgNPQHTUyPj5lR8ZTSduATUQac6qRx9pdYyVICVE8bxma56R0pX8Cdx/wg+5gKOXUPuXW1xTPNuH4JpNTd7huJwa8Ff0ReKTLHZk1hYB7uDzL5moc8kylYEwz2W13KyXxZbh3kClVSNZvPbrcp1eWoyJyznLRLVv3cCWQwmEMr1071Th4/6dnUZ/wl085HIjV93X9H8nzZ7VBkwHD8ZHB1foW0/jgbK0qsH2gV7frGFPxZydmk/Nrwdl3RtoM+xEpQI7cPYDf9j/CX/ynM4LfOeHhVfMrx0I3E8wNPX9MU+O+Pu6wsT4WbGkNhcuS4oE2As13obMnUebLwOxxWu4ErI8WG1ITwRVEQik72Iqj0d5vvjZw2z5TFzkMB/Tl3qNvAp9jzpNtvRUyrS6KRY667BZOJ9TJK/5+jenGEi7+UNq9ig490WnYDBPA/N9QSPHCx6TLNapayQvem5UCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAS9mpX4QgnwntvH9wutY+zOWBLejd/psjjVmZdYzeVC6fkCaw0Qj1unszq58EHlA8275ARTYyicRHIYLF3ZDYwMxUCu7iIQJUzVYJRqowV2Ap4OeMlh5sUb/Wlmhs5TauSZ1gz4LqMqnGkVMrvvU+1WX2ePFl81nnr1UMb2+dLzC0Gj2jH3tlzW76yFD4gElR8W4ypgvAw9pFKlSuOc4y6KS32jaOJk9zWSigPQadI1pOSSk+iKuPp98BBY/gDw+FBKUNARo3ci5F2s1dJZwQSCnuBhVb1r+3aHjnp4PAO7Mq7YyFf7qwSmuA++nF7TGhu3lf3hY1Jzgo+rOi+pFZtebCsewLDJjyNUxhQkOIf4TutC9wPJUtCKDpLA0iJso1AX5297iap5g7y0J0fUls16U+F0arsBHhgIN5ARifImeE+1bVVx7kLtklA23njczUt88ylgsCEnYyu0U+0+kwAkMDyPWDd3KPfDhykhQJ0Ev/44+JTDk3zydO2YvCpqMqLuhbZr9mvmV7uzJVbFnLr3sU75upv0N4JQLIn3XyTtDbWjTqA8d6qbG5BxYL5xkrWRxo3Fd6r1AyFje1ilKUkwZ1YZZCDvgv/2uEFyL0VlgfHfBhNbN2nsTTxijKc19ROeIRXl7eqWq/cyIbA/5LzEy2UbbEhKIroPGosQML4sc="));
    
    // hey, let's just see how much memory we're using
    print(process.memory().usage + " vars used");
    
    // And connect to WiFi, then request the web page
    digitalWrite(B9,1); // enable on Pico Shim V2
    Serial2.setup(115200, { rx: A3, tx : A2 });
    var wifi = require("ESP8266WiFi_0v25").connect(Serial2, function(err) {  
      if (err) throw err;
      console.log("Connecting to WiFi");
      wifi.connect("Espruino","helloworld", function(err) {
        if (err) throw err;
        wifi.getIP(function(e,ip) {
          console.log(ip);
          require("http").get(options, function(res) {
            console.log("Got response: " + JSON.stringify(res));
            res.on('data', function(data) { 
                console.log(">" + data);
              });
          }).on("error", function(e) {
            console.log("GOT ERROR: "+e);
          });
          console.log("Back to idle...");
        });
      });
    });
    
    

    Note: the key and certificate above work, but have been randomly generated. Please don't post keys/certificates that you intend on using in production up here :)

  • Awesome, thank you very much! It would be great if you can create (for us newbies) some tutorial how to log data into Google Docs Sheet on Google Drive.

  • Hi @Gordon, about this new board, would you open a separate thread? I think quite a number of suggestions could ne made.

  • Just added a post on this here: http://forum.espruino.com/conversations/280652/

  • @profra I just added a tutorial on uploading to Google Sheets - seems to work quite well! http://www.espruino.com/Logging+to+Google+Sheets

  • @Gordon You are wonderful man, thank you very much.
    I'm still in the mountains to ski... but after returning home I will try it.

  • @Gordon I made the first tests after arrival... but with some error messages. Look at the list... any idea? (I have Pico, shim v2, FW v0.25, your tutorial, only SSID and PSW changed)

     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v84.307 Copyright 2016 G.Williams
    >echo(0);
    =undefined
    >save()
    =undefined
    Erasing Flash.....
    Writing..........................
    Compressed 81600 bytes to 24247
    Checking...
    Done!
    Running onInit()...
    Connecting to WiFi
    192.168.20.129
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned Not enough memory
    ERROR: Failed! mbedtls_ssl_handshake returned -0x6d00
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x256a
    ERROR: Failed! mbedtls_ssl_handshake returned -0x6d00
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x256a
    ERROR: Failed! mbedtls_ssl_handshake returned -0x6d00
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x256a
    ERROR: Failed! mbedtls_ssl_handshake returned -0x6d00
    >reset()
    =undefined
     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v84.307 Copyright 2016 G.Williams
    > 
    
  • Well,

    ERROR: Failed! mbedtls_ssl_handshake returned Not enough memory
    

    Will be it - you used the code from the Google Sheets tutorial without any changes? I'll try again here with the latest build, but it worked fine when I tried it last week!

  • Ok, I just tried again, and it doesn't work (but it doesn't fail with out of memory) - I wonder if Google has detected that the same certificates are being used by multiple MAC addresses and has blocked them?

    Could you try creating your own certificates and keys using the instructions here:
    https://engineering.circle.com/https-authorized-certs-with-node-js/

    You don't need server certificates, just the client certificates.

  • @Gordon Thanks for reply... I am at work now, I will try it evening home.

  • Hi, I am new to this forum, so first of all congratulations for a great work with Espruino. I am evaluating the use of STM32 processors and Espruino for a project and one of the main requirements of the project is TLS support.
    I do not have an Espruino Pico board at hand, so I am trying everything on STM32F4Discovery board. I managed to compile Espruino for this board with TLS support and the image seems to be working (I get mbedTLS errors) but I am stuck on the Flash part to store certificates. I was playing arround with the Flash address where the certificates are stored, but the result is always the same, the system stops on flash.write... I also try to keep the certificates in RAM, because this board has more memory than the Pico, but sadly it is not enough... Any suggestion? By the way, for my tests I am using your code from the Google Sheets tutorial.

  • Ok, I've managed to solve the problem by myself, but thanks anyway. It seems that those 128k additional flash memory in the Pico do not exist in the STM32F4Discovery, but I found some usable flash in the last two sectors, by changing the the first line in your example to:

    var addr = (process.memory().flash_start + process.memory().flash_length-(2*2047))&~2047;
    

    Now mbedtls understands the certificates, but still fails with Not enough memory during handshake phase:

    >reset();
    =undefined
        _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v84.238 Copyright 2016 G.Williams
    >echo(0);
    =undefined
    Connecting to WiFi
    192.168.0.29
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned Not enough memory
    ERROR: Failed! mbedtls_ssl_handshake returned -0x6d00
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x3b10
    ERROR: Failed! mbedtls_ssl_handshake returned -0x4290
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x3b10
    ERROR: Failed! mbedtls_ssl_handshake returned -0x4290
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x3b10
    ERROR: Failed! mbedtls_ssl_handshake returned -0x4290
    Connecting to Google
    Connecting with TLS...
    Loading the CA root certificate...
    Loading the Client certificate...
    Loading the Client Key...
    Performing the SSL/TLS handshake...
    ERROR: Failed! mbedtls_ssl_handshake returned -0x3b10
    ERROR: Failed! mbedtls_ssl_handshake returned -0x4290
    

    I also tried to generate my own client certificates, as sugested to profra, but still the same out of memory error.
    By the way, I'm using ESP8266 as my network interface. Any idea on how to get it to work?

  • The STM32F4Discovery has a chip with less flash and less ram than the one in the Pico - this may not work so well there. The discovery F401 has a similar chip to what the Pico has (while the F411 has a slightly larger one, in terms of ram and flash)

  • Really? I though the F4 discovery had 128kB RAM and 1MB flash, so it should work - however I think the RAM is in 2 distinct blocks, which could cause problems - and in reality it seems that Espruino for the F4discovery actually has slightly fewer variables available than the Pico - I'm not sure whether it's just a matter of changing the board definition, or whether you'll have to start moving the stack to the second memory area though.

    But seriously, if you want to try HTTPS, buy a Pico. You can probably get one delivered next day from a local distributor. I'm not going to spend my time helping you out so that your company can save $20 by not supporting Espruino.

    If you do need help getting Espruino running on your own chip/board, I can do consultancy work - but I do have to eat, and I'm afraid I just can't afford to spend my time working for free to help people run Espruino on boards I don't get paid for.

  • First of all thanks Gordon for the point on the two banks of memory on the F4 discovery. I will take a look on that and see if I can make it work. Additionally I would like to share that I've get to run HTTPS against my own server, so everything seems to work. But still no luck with Google Sheets. I will keep trying.
    About the second part of your answer I will be very pleased to support Espruino by purchasing a Pico board, even if I do not use it, but could you please tell me where to find also the ESP8266 adapter? None of the european distributors seems to have it.
    It is not a matter of saving 20$ but saving my time (I have to eat too). I live in Spain and there are no local distributors of Espruino here, so I really doubt I can get the board in my hands in less than a week. Any way, I will buy it, do not worry.

  • @pablorodiz You get everything from Gordon on Tindie, see https://www.tindie.com/search/#q=espruino . Delivery from GB to ES should be doable ;-)

  • Thanks - yes, I sell the Shims on Tindie. I'm about the only person that does them, but lextronic in France do also sell the general purpose adaptor board: http://www.lextronic.fr/P37074-circuits-imprimes-dadaptation.html

    Great news that you got it working. Have you tried making your own key/certificate? I think it's possible Google does some kind of key-checking, and blocks the same key being used from multiple places.

  • I think there are two versions of the board. Mine have 256k flash and I think 64 or 48k of ram.

  • Ahh - you can get an F401, or a F407 I think? The F407 was the first one so on all the literature they just refer to it as F4 :(

    @pablorodiz I'm not specifically trying to get you to buy a Pico, but if you could have waited for it to arrive it would have saved you a lot time working your way through Espruino source code and Makefiles :)

  • @Gordon waiting for the postman is not my favorite sport, but source code browsing and Makefile tunning is ;-)

    And by the way, the most I try it the most I like the Espruino (software) platform, so I will try to be of some help in the code if I can get my project to go ahead.

  • So I built my own certificates and am getting these same codes. Nothing with the memory but the 0x2560 and 0x6d00.......

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

HTTPS support on Pico!

Posted by Avatar for Gordon @Gordon

Actions