my nano is showing up as an uno

What do I do?

In IDE change board to Nano, go to "tools>Board>" click little arrow and select "Nano".

The Arduino IDE does not detect which board you are using, you have to tell it.

Presumably in the option \Tools\Board: you have it set for a UNO.

So it should.

The Nano uses an older version of the bootloader; the UNO properly uses a later version called "optiboot" which is superior, so you will sometimes find the vendor has done you a favour and installed the better bootloader. :roll_eyes:

When you download to the bootloader, the IDE has no idea what chip it is actually addressing and it is indeed the case that the identity of the Nano chip is different to the UNO (but the same as the "UNO SMD") so if the bootloader says it is a UNO, the IDE can only see it as a UNO. :grinning:

Paul__B:
the bootloader says it is a UNO, the IDE can only see it as a UNO.

The bootloader doesn't "say" anything of the sort. The Optiboot bootloader of the Uno is unique in that it does report a hard-coded chip signature to avrdude during the upload process, rather than the normal process of reading the signature from the chip and passing that along. However, that can only tell avrdude that it's talking to an ATmega328P, which is the same on an Uno or Nano. The chip signature is exactly the same whether you have the DIP or the SMD version of the ATmega328P.

And that's just avrdude, the Arduino IDE doesn't know anything about that. The only way the Arduino IDE can identify which board you have connected is via the VID/PID.

In the case of the Nano or Uno, that will be the VID/PID of the USB to TTL serial adapter chip on the board. The bootloader doesn't run on that chip. It runs on the ATmega328P. The Nano uses either the FT232 or the CH340 USB to TTL serial chips. Although, at least on the FT232, it is possible to program the chip with a custom VID/PID, nobody ever does that because it would mean buying a VID and providing a custom driver. What everyone does is use the stock VID/PID of these chips provided by the manufacturer. So the Arduino IDE can only know that an FT232 or CH340 is attached to the computer. But that could be on any device.

In the case of the official Uno or faithful clones, you will see the board labeled as "Arduino/Genuino Uno" in the Tools > Port menu. This is because the Uno uses an ATmega16U2 running custom firmware and Arduino has programmed that firmware to use their own VID/PID that is unique to the Uno.

However, from fylkir's screenshot:


I can tell they're not talking about the Tools > Port menu label. They're talking about the Tools > Board menu selection, which is just based on whatever the user happened to select from it (or what the Arduino IDE has as the default selection after a fresh installation). It will show that even if you don't have any board connected at all.

Tangent: since the Arduino IDE doesn't know what device is connected to the FT232, CH340, or other generic USB chips, it doesn't label their ports in the Tools > Port menu at all. Since I regularly use boards with these chips and I have a bunch of unrelated ports on my computer, I found it quite confusing to figure out which of the unlabeled ports was which. To deal with that, I wrote a dummy hardware package that labels the ports of all common USB chips. I find it extremely useful:

I guess the OP would have had the same problem even if he chose a "Nano" board type.
The error message (that fragment of it which is visible in the screenshot) states that there has been a compilation error.