My experience with the $1 Pro Mini "clones" (BTE17-14)

I ordered up a few of these ultra-cheap alleged Pro Mini clones to play with. I believe that BTE17-14 is the part / model number but I can't be completely sure as they have other markings as well (see pic).

First thing I notice is the lack of precision frequency reference - no crystal or resonator. More on this in a bit.

The seller offered a board defs package which I installed - but quickly learned that sketches would not compile when one of the new boards was selected as target. So much for that.

Being as they're sold as Pro Mini compatible, I then tried building with "Pro or Pro Mini" as the target. Now small sketches would build & upload BUT.. the board ran at 25% of normal speed.. apparently 4mhz. Even the serial UART ran at 25% speed, 2400 baud. Weird.

But trying to upload a 30K sketch was another matter. The avrdude Writing progbar would freeze at ca. 95% with "Programmer not responding" error.. after which the board was bricked.. I bricked two of them like this, just for good measure. :wink:

So what do we know about these things? Can they be put to good use?

It is not a Pro Mini clone, this is completely different MCU platform. This boards use LGT8F328P controller rather that Atmega328. It is not a fully compatible with Atmega.
To correct use the boards you should first install a package to the Arduino IDE.

But if you have no desire to experiment, I advise you to take only clones with Atmega controllers, they are only 0.5 bucks more expensive

I'm not so sure I'd go so far as to call this "experimentation", it's more like just screwing around.. :wink: But yes, same general idea.

I use dozens of Atmega 328P-based (5V/16mhz) Pro Mini clones. My favorite type is marked "The Simple" (chinglish) and has pads for A4/A5 just inboard of A2/A3. I've had excellent luck with these, defects are fairly rare.

Recently though, an order of 32 pcs arrived from a new-to-me vendor with 4 dead boards. Eventually I figured out that they were missing the bootloader.. and was able to fix them.

With shipping, I pay around USD $2.50 ea. for these in lots of 30-40 pcs. You know a better price? If I could find them for $1.50 I'd buy 100 right now.

Sorry, no.
About $1.50 it was an exaggeration.

Ah, no worries. I was pretty sure that I'd found the best prices online without having to purchase lots of 1K pcs. or so.

I hope you did not pay more than one dollar for them

[quote="hmeijdam, post:6, topic:1077927"] I
hope you did not pay more than one dollar for them [/quote]

For which, the cheap Logic Green pro mini type? No, they were USD$0.90 ea. plus shipping. This was the best price I could find on AliEx, at the time I ordered.

Prices there fluctuate a bit, as I'm sure you're aware.

So one question.. about the boards that seem to be bricked after trying to upload a too-large sketch.

My guess is that the bootloaders were overwritten with sketch code, being that I was using improper board defs, and avrdude didn't know which area(s) of memory to leave alone. Does this seem reasonable?

Thing is, I tried to fix them by re-writing the loaders - but apparently the "Arduino as ISP" method won't work for these boards. When I select the correct board type, that option disappears from the Programmer menu..

So I take it that short of a proper ISP programmer, there's no way to use these boards in their present state?

Yes you can "revive" them.
You can do that with an Arduino Uno (nano, or whatever variant) and from the examples section you need to put the "LarduinoISP" sketch on your Arduino.
In the core there is a special board to select "Larduino Uno", because then you can select to increase the RX buffer size.

In the sketch are instructions how to connect your Arduino to the SWD programming side of your LGT board.

Then select below programmer and do "burn bootloader".

1 Like

Very interesting, thank you for for all of the helpful information! I'll have to try this out later today.

So what is this "Larduino" term that I keep seeing? The L means ..? Also, what does SWD stand for in this case?

I suspect Logic Green (manufacturer of this MCU) or the individual who created the first board support package just put an "L" before Arduino.

The only SWD I know of stands for "Serial Wire Debug" or "Serial Wire Data"

Given there is SWD and SWC on these boards I guess it is "Data" and "Clock".

A few years back I bought the original SWDICE-MKII programmer, so I don't use the bootloaders anymore.

Ran into some trouble. I am trying to build & upload the LarduinoISP example to a standard Uno clone (SMD version). The sketch builds fine, but the upload fails.

Is it OK to use the Atmega 328P based Uno clone as the programmer / master? Which board type (target) do I set?

Error follows (it's like the wrong COM port is chosen.. but Ive checked this):

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1c
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c

avrdude done.  Thank you.

An error occurred while uploading the sketch

Could someone please clear up the meaning of the markings on the LGT boards?

First, do we refer to the entire family of boards & uC chips as "LGT" for Logic Green Tech?

Now the markings:

BTE17-14 - Model or p/n for the pseudo Pro Mini?

LGT8F328P - Model or p/n of the pseudo-328P uC chip itself?

LQFP32 - The case style / board pattern of the uC chip?

MiniEV8 - What does this mean?

Probably not. When a Chinese vendor clones an existing Arduino board, that's one thing, and it doesn't matter too much how badly the clone is documented, because if it's any good, the original documentation will apply. When they do something more original, like the LGT-based boards, and it's poorly documented, you might be out of luck. And those vendors ruthlessly clone each other; sometimes exactly, sometimes with modifications.

First, do we refer to the entire family of boards & uC chips as "LGT" for Logic Green Tech?

Sure. "Logic Green Technology" is the name of a company.

BTE17-14 - Model or p/n for the pseudo Pro Mini?

A Model, anyway. See above about clones. BTE was a product prefix used by Baite Electronics, which I once regarded as one of the more reputable vendors on Aliexpress (they put their name on boards, had pinout diagrams, etc.) They seem to have disappeared, but perhaps this vendor is trying to capitalize on their naming scheme?
I guess "Mini-EV8" is the english name assigned to that product number. It probably doesn't mean anything specific.

There are Nano-sized (with USB converters) LGT boards as well. I tried to buy some of the 48pin versions recently, but the vendor sent the wrong boards (and refunded my money, so now I have some free LGT nano boards.)

LGT8F328P - Model or p/n of the pseudo-328P uC chip itself?

Yes.

LQFP32 - The case style / board pattern of the uC chip?

Yes. "Leaded Quad Flat Pack", I believe. The LGT8F328P also comes in an SSOP20 and a LQFP48 (With additional ports!)

There is a translated data sheet floating around, and various technical discussions in other fora. It seems to be a pretty nice chip, all things considered, and with enough extra features and differences that "clone" seems a bit unfair. I dunno about "intellectual property of the instruction set"; that's always been a fuzzy area...

The main gotcha for Arduino users is the completely different chip-programming algorithm...

Yes you could compare LGTxxyyzz made by Logic Green Tech with
STMxxyyzz for the ST Micro range of microprocessors.
or ATxxxxxx with ATmel

BTE17-14 - Model or p/n for the pseudo Pro Mini? Yes

LGT8F328P - Model or p/n of the pseudo-328P uC chip itself? Yes, the model

LQFP32 - The case style / board pattern of the uC chip? Yes, the package (square 32 pins).

MiniEV8 - What does this mean? Mini EValuation Board

That does not look good to me. Wouldn't you normally use the AVRISP to put something onto your UNO (clone)?

@hmeijdam @westfw

Thank you for the stereo answers.. it looks like I had it mostly correct, though I clearly misread MiniEVB as MiniEV8. This is probably the result of blurred screen printing, or maybe that Chinglish thing again.

As mentioned, I also have a couple of the Nano3 type LGT boards here, model is BTE18-04. Once again, they seem to have slightly less available flash storage than the Atmega-based boards.

Later today I'll revisit the LarduinoISP issue. To be clear, can I use an Atmega based Arduino (Uno, Nano) as the LarduinoISP master / programmer?

Last time I tried a few years back I HAD TO use an Atmega based board. It failed when I tried to turn an LGT based board into my programmer.

I had the LGT bootloader called to my attention recently.
Aside from being a bit annoyed that the removed copyrights and otherwise ignored the spirit of the license, I noticed that it's somewhat substantially bigger than Optiboot, or even the old Arduino bootloader. (It starts at 0x7400 - 3k of space!)

I think part of that is that it doesn't have the same hardware support for bootloaders as a regular ATmega328, and part is because they don't have EEPROM, and reserve some of the flash for "EEPROM Emulation."

What sort of hdwe support is required for a bootloader - could you elaborate on this?

For instance, in the case of the venerable 6502, the final step of the power-up / reset process is to make an indirect jump to RAM at $FFFE/$FFFF. This vector should point to whatever routine is needed to init the system.

What beyond this is needed in Arduino?