blob: ba00c0020ad2661bc9f2c249bb4c66412cbe6e17 (
plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#!/usr/bin/env python3
# Copyright 2021 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""A tool to manage the fingerprint system on ChromeOS."""
import argparse
import os
import shutil
import subprocess
import sys
def cmd_flash(args: argparse.Namespace) -> int:
"""Flash the entire firmware FPMCU using the native bootloader.
This requires the Chromebook to be in dev mode with hardware write protect
disabled.
"""
if not shutil.which("flash_fp_mcu"):
print("Error - The flash_fp_mcu utility does not exist.")
return 1
cmd = ["flash_fp_mcu"]
if args.image:
if not os.path.isfile(args.image):
print(f"Error - image {args.image} is not a file.")
return 1
cmd.append(args.image)
print(f'Running {" ".join(cmd)}.')
sys.stdout.flush()
p = subprocess.run(cmd) # pylint: disable=subprocess-run-check
return p.returncode
def main(argv: list) -> int:
parser = argparse.ArgumentParser(description=__doc__)
subparsers = parser.add_subparsers(dest="subcommand", title="subcommands")
# This method of setting required is more compatible with older python.
subparsers.required = True
# Parser for "flash" subcommand.
parser_decrypt = subparsers.add_parser("flash", help=cmd_flash.__doc__)
parser_decrypt.add_argument(
"image", nargs="?", help="Path to the firmware image"
)
parser_decrypt.set_defaults(func=cmd_flash)
opts = parser.parse_args(argv)
return opts.func(opts)
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))
|