NodeMCU board(s) have stopped being able to be programmed.

I bought a few of these boards.

I got one out and it is working. I won't jinx myself by trying to program it now.

But it has been used/flashed recently. All works.

The other day I got another new one out of its bag and tried to upload a program and it failed.

I noticed I had another one "opened" near by so I tried it. Same thing.

This is what I have set for the board type:

NodeMCU 1.0 (ESP-12E)
80MhZ 4M 1M SPIFFS
115200 dev.tty/USB0

I have that "magic line" in the preferences:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

It used to work.

When I try to upload a sketch - BLINK even - it gives this error:

Arduino: 1.8.9 (Linux), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Sketch uses 257672 bytes (24%) of program storage space. Maximum is 1044464 bytes.
Global variables use 26572 bytes (32%) of dynamic memory, leaving 55348 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.6
2.6
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting....
Traceback (most recent call last):
Chip is ESP8266EX
Features: WiFi
MAC: 5c:cf:7f:6f:f0:9f
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/upload.py", line 25, in <module>
    esptool.main(fakeargs)
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 2694, in main
    detect_flash_size(esp, args)
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 2073, in detect_flash_size
    flash_id = esp.flash_id()
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 567, in flash_id
    return self.run_spiflash_command(SPIFLASH_RDID, b"", 24)
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 812, in run_spiflash_command
    old_spi_usr = self.read_reg(SPI_USR_REG)
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 475, in read_reg
    val, data = self.command(self.ESP_READ_REG, struct.pack('<I', addr))
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 332, in command
    p = self.read()
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 277, in read
    return next(self._slip_reader)
  File "/home/me/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py", line 1877, in slip_reader
    raise FatalError("Timed out waiting for packet %s" % waiting_for)
esptool.FatalError: Timed out waiting for packet header
esptool.FatalError: Timed out waiting for packet header

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I am not going to try the working board, as it is working.

But I have tried TWO boards. One "used" (I may have flashed it with a sketch for testing or something) and one "brand new out of the box" where I opened the anti-static bag.