Worst Experience To Date

Hi all, let me start by apologizing for the rant but I have expended all my patience with this development platform. Hopefully someone here can point me in the right direction.

I have developing embedded firmware (c, asm, c++) for 10+ years now, and have worked with a variety of products with varied complexity. I have however, never encountered a platform that in my first day has among other things:

  1. Blue screened my PC 4 times from attempting to open a serial port
  2. Stopped responding numerous times requiring unplugging the power source entirely and reconnecting it upwards of 5 times in some cases to restore functionality.
  3. Required hours of reading to sort out how to simply blink an LED

IDE
Sorting out how to use this IDE is a nightmare. I started with the online version since that seems to be recommended, however I quickly discovered I can’t do anything here without registering a device which requires a credit card. All I want to do at this point is blink an LED and bring up some peripherals. I switched to the desktop version (which appears to just be Atom with some plugins) and was able to select my platform. I press build, but for some reason only the first project builds. After removing all but the one project I am finally able to generate a .bin file with no idea how to flash it. Note: The quickstart guide provides this instruction:

“Go ahead and save this application, then flash it to your device. You should be able to see that LED blinking away!”

CLI
After digging through 3rd party tutorials I find reference to using the CLI to flash my device instead however the CLI tool is fraught with issues as well. Nothing seems to work out of the box for me. Long story short there was apparently a dependency issue introduced that I had to fix by doing a “particle update”. After about 4 hours I am finally able to flash my basic blink an LED image.

Libraries
It takes me another hour to find out that I need to go into manual mode or my application won’t even be run at all and finally I have my LED blinking. Now, I try adding a serial output for debug. The prints in the loop are printing, but I can’t catch anything from setup since resetting the board also kills the serial port. I try adding a delay so that I can catch the setup logs and now opening a serial terminal causes my PC to BSOD. Undeterred, I figure I’d attach a button so that the application can wait on a button push before running through the rest of the setup function, however attaching a button to B0 causes the CLI tool to start hanging. Removing it, it goes back to normal. According to the hardware docs B0 is a user GPIO, however I can’t be sure because the schematics are incomplete.

Now I’m in a state where I can no longer flash the device using CLI or open a serial connection to it (COM port access denied), the board breathes cyan for a while before seemingly randomly entering listen mode, or searching for internet mode. So far I’ve attempted to bring up an LED and a serial port. I can’t even fathom writing a SPI driver or similar especially with the apparent lack of any debugging options.

Am I fundamentally misunderstanding something? Why has this experience been fraught with so many roadblocks.

I’m sorry you’ve had such a bad experience.

The first thing is to fix your serial driver. I presume you are using Windows 10, and on some computers the Particle serial driver will BSOD. Fortunately, you don’t need to use the Particle serial driver on Windows 10, and the built-in Windows CDC serial driver will work great with no BSOD. You can find the instructions here: https://github.com/rickkas7/particle_notes/tree/master/fixing-windows-10-serial-drivers

If you were asked for a credit card, I presume you are using an Electron or E series board. We really recommend doing that, it’s free for 3 months as long as you use less than 3 MB of data per month. While you can use the device without a valid SIM card, that’s an advanced technique and features like OTA flash, system firmware updates, and all of the cloud functions won’t work unless you have a working SIM and account. All of the tutorials and examples assume you do.

In any case, definitely start by fixing the serial driver for now and feel free to open a support ticket to work through the remaining issues. We can walk you through the process of successfully using the device without a SIM card (or with a 3rd-party SIM card) if you really want to do that.

4 Likes

Thanks for the quick reply. It is already much more functional with the driver fix. I think this should probably be a more prominent piece of information since I’m assuming a large portion of developers are using Win10.

A future version of the Particle CLI installer will just automatically remove the old Particle serial driver under Windows 10 because, while the problem doesn’t affect everyone, for the people it does affect it makes for a terrible experience.

3 Likes

@sho.

I know it’s hard to believe right now, but Particle is really one of the better environments out there. Sure it has some short comings, but there are not many. You just have stumbled into what seems like all of them at once.
The BSOD, has bitten me many times, so I feel your pain there, and I agree, that CLI is a silly way to handle things nowadays when it could very easily be simply a GUI thing.

Having said all this, take care of the driver issue as @rickkas7 mentioned that will take care of it.
As for the serial issue, its not Particles fault. The device boots up fast and starts spitting data out, its the time it takes windows to reconnect to the USB is the trouble. To get around this you have 2 options.

#1) Inset this in your setup(), NOTE: it will hang here until you hit a key.

    // Now open your Serial Terminal, and hit any key to continue!
    Serial.begin(115200);
    while(!Serial.available()) Particle.process();

#2) Use the alternate serial port and use something like this on those UART pins.
This way you wont have to add #1 into your code, and wait for Windows to reconnect to the USB after the device reboots.

Give it some time, I really feel you will like it, the docs are very good and this community is VERY helpful.

4 Likes

Thanks for all the feedback guys. I’ve already switched to an FTDI USB-UART cable and am using Serial1 which has fixed the serial issue. I feel like I have a stable base to build on now. Hopefully no more snags for a while!

One other comment regarding “restarting kills the serial port” – I’m not sure if this is what you’re referring to, butl learned something about this a while back. I had been using PuTTY as my terminal emulator for years, but now I use TeraTerm (Windows only) with my Particle devices, because a session will “survive” a restart of the device. I could not figure out how to get PuTTY to behave this way, although admittedly I didn’t spend too much time dinking with it.

Good luck, and I hope things go more smoothly from here on out!

cheers,
ParticleD

1 Like

Same here. Terra Term will stay alive on a restart so you will see the first bit of data it spits out usually.

Hey, sorry to hear the start has been this difficult for you. Apparently it has to get really bad to get really great sometimes.
Success ahead, guaranteed!!!
Gustavo.

2 Likes

In the short term, can the Serial Port driver be unbundled from the DFU utility driver? Currently, our install process for contractors is to install both, and then remove the Serial Port driver. It’s definitely a brittle process.

Ideally, as you point out, the Serial Port driver should be removed. It’s bad mojo to be shipping code which we know will crash computers.