This file is indexed.

/usr/bin/ard-reset-arduino is in arduino-mk 1.5-2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python

from __future__ import print_function
import serial
import os.path
import argparse
from time import sleep

parser = argparse.ArgumentParser(description='Reset an Arduino')
parser.add_argument('--caterina', action='store_true', help='Reset a Leonardo, Micro, Robot or LilyPadUSB.')
parser.add_argument('--verbose', action='store_true', help="Watch what's going on on STDERR.")
parser.add_argument('--period', default=0.1, help='Specify the DTR pulse width in seconds.')
parser.add_argument('port', nargs=1, help='Serial device e.g. /dev/ttyACM0')
args = parser.parse_args()

if args.caterina:
    if args.verbose: print('Forcing reset using 1200bps open/close on port %s' % args.port[0])
    ser = serial.Serial(args.port[0], 57600)
    ser.close()
    ser.setBaudrate(1200)
    ser.open()
    ser.setRTS(True)  # RTS line needs to be held high and DTR low
    ser.setDTR(False) # (see Arduino IDE source code)
    ser.close()
    sleep(1)

    while not os.path.exists(args.port[0]):
        if args.verbose: print('Waiting for %s to come back' % args.port[0])
        sleep(1)

    if args.verbose: print('%s has come back after reset' % args.port[0])
else:
    if args.verbose: print('Setting DTR high on %s for %ss' % (args.port[0],args.period))
    ser = serial.Serial(args.port[0], 115200)
    ser.setDTR(False)
    sleep(args.period)
    ser.setDTR(True)
    ser.close()