| # Copyright 2019 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Connect to WiFi if WiFi credentials exist" |
| author "chromium-os-dev@chromium.org" |
| |
| # Read WiFi credentials at /usr/local/etc/wifi_cred and connect to WiFi network |
| # accordingly. |
| # |
| # The power team wants to run autotests on test devices from moblab via WiFi. |
| # This upstart script is an effort to enable WiFi connection between moblab and |
| # test Chrome devices, in addition to Ethernet connection which is already |
| # supported. If WiFi credentials at /usr/local/etc/wifi_cred exist, this upstart |
| # script connects to that WiFi after the device gets provisioned by the moblab. |
| # The WiFi credentials are associated with the moblab and should come from the |
| # moblab. /usr/local/etc/wifi_cred is in the stateful partition. During the |
| # provision process, moblab can write to stateful.tgz, which then replaces the |
| # stateful partition on a test Chrome device. |
| # |
| # TODO(mqg): consider a more robust key/value format. |
| # Format for /usr/local/etc/wifi_cred: |
| # If WiFi network has no password - |
| # |
| # ssid |
| # |
| # If WiFi network has password - |
| # |
| # ssid |
| # password |
| |
| start on started shill |
| |
| task |
| |
| env WIFI_CRED=/usr/local/etc/wifi_cred |
| |
| script |
| if [ -f "${WIFI_CRED}" ]; then |
| logger -t "${UPSTART_JOB}" "${WIFI_CRED} found." |
| |
| lines=$(wc -l < "${WIFI_CRED}") |
| |
| # Read the first line of $WIFI_CRED as WiFi ssid. |
| set -- "$(sed -n 1p "${WIFI_CRED}")" |
| logger -t "${UPSTART_JOB}" "WiFi ssid: $*" |
| |
| # Read the second line of $WIFI_CRED as WiFi password if it exists. |
| if [ "${lines}" -gt 1 ]; then |
| set -- "$@" "$(sed -n 2p "${WIFI_CRED}")" |
| fi |
| |
| # TODO(mqg): if WiFi device does not come up within wifi script retries, |
| # wifi script will fail. This is very unlikely, but if this becomes an issue |
| # after further testing, consider using dbus messages to add WiFi |
| # credentials to shill profile instead of using wifi script. |
| /usr/local/autotest/cros/scripts/wifi connect "$@" 2>&1 \ |
| | logger -t "${UPSTART_JOB}" |
| fi |
| end script |