diff --git a/README.md b/README.md index 4c08c31..e04b469 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,15 @@ - MODE: ON 2. Install the SD Card, power up the board via the power jack or PoE and plug in the RJ45 Ethernet cable. 3. Wait for all the front panel LEDs except the termination status LEDs to turn off. It can take a minutes or two for first boot. If it does not boot up, try to flash the SD Card again. -4. Run `ssh -p 3030` to ssh into fast-servo and run `linien-server run` to start the linien server. -5. In the dev shell, run `linien` to launch the GUI. Add new device. Username is `root` and it does not take any password to log in. You leave the password field with any text. -6. Select the newly added device and click connect in the GUI to connect and start the GUI. +4. By default, linien-server starts up automatically. In case linien-server crashes, it will restart itself. Logs are stored in `/root/linien-server-log`. Here are some commands to interact with the linien-server service once you `ssh -p 3030` into fast-servo. + +| Description | Command | +|------------------------------------------------------|-----------------------------------------| +| Start the linien-server service | `linien-server start` | +| Stop the linien-server service | `linien-server stop` | +| Check if the linien-server service is running | `linien-server status` | +| Set the linien-server service to start at bootup | `linien-server enable` | +| Set the linien-server service not to start at bootup | `linien-server disable` | + +4. In the dev shell, run `linien` to launch the GUI. Add new device. Username is `root` and it does not take any password to log in. You leave the password field with any text. +5. Select the newly added device and click connect in the GUI to connect and start the GUI. diff --git a/fast-servo/linien-server-cli.patch b/fast-servo/linien-server-cli.patch new file mode 100644 index 0000000..9331238 --- /dev/null +++ b/fast-servo/linien-server-cli.patch @@ -0,0 +1,73 @@ +diff --git a/linien-client/linien_client/deploy.py b/linien-client/linien_client/deploy.py +index 7355cc3..876f1ec 100644 +--- a/linien-client/linien_client/deploy.py ++++ b/linien-client/linien_client/deploy.py +@@ -83,14 +83,14 @@ def start_remote_server( + if (local_version != remote_version) and not ("dev" in local_version): + raise InvalidServerVersionException(local_version, remote_version) + +- logger.debug("Sending credentials") +- conn.run( +- 'python3 -c "from linien_common.communication import write_hash_to_file;' +- f"write_hash_to_file('{hash_username_and_password(device.username, device.password)}')\"", # noqa E501 +- out_stream=out_stream, +- err_stream=out_stream, +- warn=True, +- ) ++ # logger.debug("Sending credentials") ++ # conn.run( ++ # 'python3 -c "from linien_common.communication import write_hash_to_file;' ++ # f"write_hash_to_file('{hash_username_and_password(device.username, device.password)}')\"", # noqa E501 ++ # out_stream=out_stream, ++ # err_stream=out_stream, ++ # warn=True, ++ # ) + + logger.debug("Starting server") + conn.run( +diff --git a/linien-server/linien_server/cli.py b/linien-server/linien_server/cli.py +index 7781c74..827d04f 100644 +--- a/linien-server/linien_server/cli.py ++++ b/linien-server/linien_server/cli.py +@@ -44,20 +44,19 @@ class LinienServerCLI: + + def start(self) -> None: + """Start the Linien server as a systemd service.""" +- copy_systemd_service_file() + logger.info("Starting Linien server") +- subprocess.run(["systemctl", "start", "linien-server.service"]) ++ subprocess.run(["sv", "up", "/etc/service/linien-server"]) + logger.info("Started Linien server") + + def stop(self) -> None: + """Stop the Linien server running as a systemd service.""" + logger.info("Stopping Linien server") +- subprocess.run(["systemctl", "stop", "linien-server.service"]) ++ subprocess.run(["sv", "down", "/etc/service/linien-server"]) + logger.info("Stopped Linien server") + + def status(self) -> None: + """Check the status of the Linien server.""" +- subprocess.run(["journalctl", "-u", "linien-server.service"]) ++ subprocess.run(["sv", "status", "/etc/service/linien-server"]) + + def run(self, fake: bool = False, host: Optional[str] = None) -> None: + """ +@@ -89,15 +88,14 @@ class LinienServerCLI: + + def enable(self) -> None: + """Enable the Linien server to start on boot.""" +- copy_systemd_service_file() + logger.info("Enabling Linien server") +- subprocess.run(["systemctl", "enable", "linien-server.service"]) ++ subprocess.run(["rm", "/etc/service/linien-server/down"]) + logger.info("Enabled Linien server") + + def disable(self) -> None: + """Disable the Linien server from starting on boot.""" + logger.info("Disabling Linien server") +- subprocess.run(["systemctl", "disable", "linien-server.service"]) ++ subprocess.run(["touch", "/etc/service/linien-server/down"]) + logger.info("Disabled Linien server") + + diff --git a/flake.nix b/flake.nix index a3d1dbc..7826ac3 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,7 @@ ./fast-servo/linien-gui-fast-servo-hardware-specific.patch ./fast-servo/linien-client-ssh-port-change.patch ./fast-servo/linien-server-fast-servo.patch + ./fast-servo/linien-server-cli.patch ./fast-servo/linien-gateware-fast-servo.patch ./fast-servo/linien-gateware-autolock-pipeline.patch ./fast-servo/linien-module-iir-coeff-width-set-to-18bit.patch @@ -54,6 +55,7 @@ ./not-os-patches/pr-30.patch ./not-os-patches/pr-31.patch ./not-os-patches/pr-33.patch + ./not-os-patches/pr-34.patch ./not-os-patches/iproute2.patch ]; }; @@ -350,6 +352,7 @@ installPhase = '' mkdir -p $out $out/nix-support cp gateware/build/top.bit $out + cp gateware/build $out -r cp linien-server/linien_server/gateware.bin $out cp linien-server/linien_server/csrmap.py $out echo file binary-dist $out/top.bit >> $out/nix-support/hydra-build-products @@ -651,6 +654,9 @@ in rec { devShell.x86_64-linux = pkgs.mkShell { name = "nix-servo-dev_shell"; + packages = [ + vivado + ]; buildInputs = with pkgs.python3Packages; [ matplotlib ] ++ [ linien-common linien-client linien-gui ]; diff --git a/not-os-patches/pr-34.patch b/not-os-patches/pr-34.patch new file mode 100644 index 0000000..3c24339 --- /dev/null +++ b/not-os-patches/pr-34.patch @@ -0,0 +1,20 @@ +diff --git a/zynq_image.nix b/zynq_image.nix +index 069fe89..979b760 100644 +--- a/zynq_image.nix ++++ b/zynq_image.nix +@@ -51,6 +51,15 @@ in { + hostname ${config.networking.hostName} + exec setsid agetty ttyPS0 115200 + ''; ++ "service/linien-server/run".source = pkgs.writeShellScript "linien-server" '' ++ exec 2>&1 ++ exec setsid linien-server run ++ ''; ++ "service/linien-server/log/run".source = pkgs.writeShellScript "linien-server-logger" '' ++ exec 2>&1 ++ mkdir -p /root/linien-server-log ++ exec svlogd -tt /root/linien-server-log ++ ''; + "pam.d/other".text = '' + auth sufficient pam_permit.so + account required pam_permit.so