Power toggle / reset circuit

My Garmin keeps crashing. This circuit reboots it with a power toggle. Sending a bunch of null chars from a RS232 port to the circuit switches the relay, interrupting power to the Garmin.
I wrote a little program to send null chars from a serial port. I suppose you could do the same thing with a shell script

  Shd >---------------------------------------------------------> Shd
  From USB                                                        To Garmin


  GND >---------------------------------------------------------> GND
  From USB                                                        To Garmin

                                                      NC
                                                      O---------> +5V
                                                     /            To Garmin
  +5V >-----------------------------------------*---O CM          (60mA)
  From USB                                      |
                                                +-----O NO
                                                      .
  +5V >-----------------------------------*-----+    /|\
  From 'other' USB                        |     |     |
                                          |     |     | Relay
                                1N4148  --+--  +++    | 5V, 125Ω (40mA)
                                         /|\   |/| ---+
                                        --+--  +++
                                          |     |
                                          |     |
                                          +-----*
                                                |
                                                |
           4k7          4k7                     |
                                            |  /
          +-----+       +-----+             |/
  TXD >---+     +---*---+     +---*-----*---|
  (3)     +-----+   |   +-----+   |     |   |\
                    |             |     |   | _\|  BC547B
                    |             |     |       |
                  --+--          +++  --+--     |
                  --+--          | |   /|\      |
                    |            +++  --+--     |
                    |             |     |       |
                    |             |     |       |
  GND >-------------*-------------*-----*-------*
  (5)             470 nF        100k  1N4148    |
                                                |
                                                |
  RTS >-------> CTS                             |
  (7)           (8)                             |
                                                |
                                                |
  DTR >---*---> DSR                             |
  (4)     |     (6)                             |
          |                                     |
          |                                     |
          +---> DCD                             |
                (1)                             |
                                                |
                                                |
  GND >-----------------------------------------+
  From 'other' USB


  Shd >---+
  From    |
  RS232   |
          |
  Shd >---+
  From 'other' USB

Relay

CMCommon
NCNormally closed
NONormally open

The relay I use is a Maluska HJR1-2C, which in fact double throw;

                    NC
                    O-----*---> +5V
                   /      |   To Garmin
  +5V >-------*---O CM    |
  From USB    |           |
              *-----O NO  |
              |           |
              |     NC    |
              |     O-----+
              |    /
              *---O CM
              |
              +-----O NO

RS232 Connector

The pin numbers are those of a 9-pin RS232 connector;

     1 2 3 4 5
   ─────────────
   ╲ o o o o o ╱
    ╲ o o o o ╱
      ───────
      6 7 8 9

Misc

The circuit and the Garmin are powered from different USB ports.
The same circuit can be used to power toggle other equipment.
Any low power low frequent general purpose NPN transistor can be used instead of the BC547B.
I use 2 seconds of null chars at 115200 bps (23040 bytes).