installingmixonrpi
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| installingmixonrpi [2026/10/27 16:13] – tputman | installingmixonrpi [2026/10/27 17:06] (current) – tputman | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| Complete [[BaseRaspberryPiSetupBookworm]|Raspberry Pi Base Setup]] first. | Complete [[BaseRaspberryPiSetupBookworm]|Raspberry Pi Base Setup]] first. | ||
| - | MIX requires **Java 25 or newer**. The Raspberry Pi installation validated with the current MIX runtime used: | + | These instructions install |
| <code text> | <code text> | ||
| - | /opt/java/zulu25.34.17-ca-fx-jdk25.0.3-linux_aarch64 | + | /home/mix/mixruntime |
| </ | </ | ||
| - | The Raspberry Pi may still use another Java version as its system default. MIX does not require changing the global '' | + | MIX requires **Java 25**. |
| - | These instructions assume MIX is installed in: | + | The validated Raspberry Pi installation used: |
| <code text> | <code text> | ||
| - | /home/mix/mixruntime | + | /opt/java/zulu25.34.17-ca-fx-jdk25.0.3-linux_aarch64 |
| </ | </ | ||
| The normal MIX web port is **7226** unless '' | The normal MIX web port is **7226** unless '' | ||
| - | Useful | + | The MIX setup page is: |
| <code text> | <code text> | ||
| - | http://< | ||
| http://< | http://< | ||
| </ | </ | ||
| - | The first opens the deployed | + | After an MIStudio project is deployed, |
| - | ===== 1. Install the MIX runtime ===== | + | <code text> |
| + | http://< | ||
| + | </ | ||
| - | Use the MIX runtime | + | ===== 1. Copy the MIX runtime |
| - | A current | + | On the Windows computer, open PowerShell and change to the MIX installation |
| + | |||
| + | For example: | ||
| <code text> | <code text> | ||
| - | mix.jar | + | Set-Location " |
| - | mix.properties | + | |
| - | htmlroot/ | + | |
| - | lib/ | + | |
| - | log4j/ | + | |
| - | logs/ | + | |
| - | scripts/ | + | |
| - | security/ | + | |
| </ | </ | ||
| - | The Linux startup script is: | + | Create the MIX runtime directory on the Raspberry Pi: |
| <code text> | <code text> | ||
| - | scripts/MIX.sh | + | ssh mix@< |
| </ | </ | ||
| - | Current MIX releases no longer use '' | + | Copy the contents of the MIX runtime |
| - | + | ||
| - | The top-level '' | + | |
| - | + | ||
| - | For example, from Windows PowerShell, if the MIX runtime | + | |
| <code text> | <code text> | ||
| - | C:\ET\<release>\MIX | + | scp -r .\* mix@<Pi-address>:/ |
| </ | </ | ||
| - | change | + | After the copy completes, connect |
| <code text> | <code text> | ||
| - | Set-Location " | + | ssh mix@<Pi-address> |
| </ | </ | ||
| - | Create | + | Verify |
| <code text> | <code text> | ||
| - | ssh mix@<Pi-address> "mkdir -p / | + | ls -la /home/mix/ |
| + | ls -la / | ||
| </ | </ | ||
| - | Copy the contents of the MIX runtime | + | The MIX runtime |
| <code text> | <code text> | ||
| - | scp -r .\* mix@< | + | mix.jar |
| + | mix.properties | ||
| + | htmlroot/ | ||
| + | lib/ | ||
| + | log4j/ | ||
| + | logs/ | ||
| + | scripts/ | ||
| + | security/ | ||
| </ | </ | ||
| - | After the copy, verify the runtime on the Pi: | + | The Linux startup script is: |
| <code text> | <code text> | ||
| - | ls -la / | + | / |
| - | ls -la /home/mix/ | + | |
| </ | </ | ||
| Line 94: | Line 93: | ||
| </ | </ | ||
| - | If the source | + | If the copied MIX installation contains an '' |
| - | ===== 2. Verify Java 25 and start MIX manually ===== | + | Each Raspberry Pi must use the runtime license associated with that Pi. |
| - | Verify the Java installation | + | ===== 2. Verify Java 25 ===== |
| + | |||
| + | Verify the Java installation: | ||
| <code text> | <code text> | ||
| Line 104: | Line 105: | ||
| </ | </ | ||
| - | The validated installation reports | + | The validated installation reports: |
| - | Start MIX manually: | + | <code text> |
| + | openjdk version " | ||
| + | </ | ||
| + | |||
| + | MIX can use this Java installation directly without changing the Raspberry Pi's system-wide Java default. | ||
| + | |||
| + | ===== 3. Start MIX manually | ||
| + | |||
| + | Change to the MIX runtime directory: | ||
| <code text> | <code text> | ||
| cd / | cd / | ||
| + | </ | ||
| - | MIX_JAVA_HOME=/ | + | Start MIX with Java 25: |
| + | |||
| + | <code text> | ||
| + | MIX_JAVA_HOME=/ | ||
| ./ | ./ | ||
| </ | </ | ||
| - | Startup output should | + | Startup output should |
| For example: | For example: | ||
| Line 124: | Line 137: | ||
| MIX properties: | MIX properties: | ||
| Java executable: | Java executable: | ||
| + | Native libraries: / | ||
| Debug port: 18050 | Debug port: 18050 | ||
| + | </ | ||
| + | |||
| + | MIX should also report: | ||
| + | |||
| + | <code text> | ||
| mix.port: | mix.port: | ||
| </ | </ | ||
| - | The runtime should also report | + | and its MIX build number. |
| - | If the Pi does not yet have its runtime license, MIX will display | + | If a Raspberry |
| - | + | ||
| - | The current validation showed: | + | |
| <code text> | <code text> | ||
| Line 138: | Line 155: | ||
| </ | </ | ||
| - | An invalid-license message at this stage is expected until the Raspberry Pi' | + | Keep this key for the license |
| - | ===== 3. Install the Raspberry Pi MIX license ===== | + | ===== 4. Install the Raspberry Pi runtime |
| - | Each Raspberry Pi requires | + | Each Raspberry Pi requires |
| - | The pre-license key can be obtained from MIX startup | + | The pre-license key is shown during |
| <code text> | <code text> | ||
| Line 150: | Line 167: | ||
| </ | </ | ||
| - | On the setup page, select | + | Select |
| - | Send the displayed pre-license key to ErgoTech. | + | Copy the license provided for the Raspberry Pi into: |
| - | + | ||
| - | Copy the license provided for that Raspberry Pi into: | + | |
| <code text> | <code text> | ||
| Line 160: | Line 175: | ||
| </ | </ | ||
| - | The license | + | The filename may include the pre-license key, for example: |
| <code text> | <code text> | ||
| Line 166: | Line 181: | ||
| </ | </ | ||
| - | Restart MIX after installing | + | If TransSECS has already been licensed on the same Raspberry Pi using the same pre-license |
| - | For a manual startup: | + | Start MIX again: |
| <code text> | <code text> | ||
| cd / | cd / | ||
| - | MIX_JAVA_HOME=/ | + | MIX_JAVA_HOME=/ |
| ./ | ./ | ||
| </ | </ | ||
| - | A successful | + | Verify that startup |
| <code text> | <code text> | ||
| Line 183: | Line 198: | ||
| </ | </ | ||
| - | A runtime license generated for the Raspberry Pi was successfully accepted by both MIX and TransSECS on the same Pi during validation. | + | ===== 5. Verify the MIX web server ===== |
| - | + | ||
| - | Opening **Get Pre-License Key** also provides a convenient way to update the Raspberry Pi's date and time. This can be useful on systems which do not have access to a network time server. | + | |
| - | + | ||
| - | The setup page also contains **Network Configuration** for installations which use MIX to manage Raspberry Pi network settings. | + | |
| - | + | ||
| - | ===== 4. Verify the MIX web server ===== | + | |
| While MIX is running, verify that port 7226 is listening: | While MIX is running, verify that port 7226 is listening: | ||
| Line 209: | Line 218: | ||
| </ | </ | ||
| - | The MIX setup page should load. | + | Verify that the MIX setup page loads. |
| - | After an application has been deployed, | + | ===== 6. Deploy |
| - | <code text> | + | In MIStudio, select the project' |
| - | http://< | + | |
| - | </ | + | |
| - | ===== 5. Deploy an MIStudio project directly to the Raspberry Pi ===== | + | Configure the target with the Raspberry Pi address. |
| - | MIStudio can deploy a project directly to the MIX runtime running on the Raspberry Pi. | + | For example: |
| - | + | ||
| - | In the MIStudio project, select the **MIX Target**. | + | |
| - | + | ||
| - | Configure: | + | |
| <code text> | <code text> | ||
| Line 232: | Line 235: | ||
| </ | </ | ||
| - | Use the configured MIX password. | + | Enter the configured MIX password. |
| - | Save the project, then select **Deploy**. | + | Save the MIStudio |
| - | During a successful deployment, | + | During a successful deployment, MIX should: |
| * authenticate the MIStudio deployment request, | * authenticate the MIStudio deployment request, | ||
| - | * stop and release | + | * stop the currently |
| * replace the deployed application files, | * replace the deployed application files, | ||
| - | * load the new '' | + | * receive |
| - | * reload the MIX project, | + | * reload the application logic, |
| - | * continue | + | * continue |
| - | + | ||
| - | A successful deployment does not require manually stopping | + | |
| After deployment, open: | After deployment, open: | ||
| Line 253: | Line 254: | ||
| </ | </ | ||
| - | and verify | + | Verify |
| - | For production systems, do not leave the default '' | + | The MIX console should show the deployment files being received and the application logic being reloaded. |
| - | <code text> | + | ===== 7. Stop the manual MIX process ===== |
| - | http://< | + | |
| - | </ | + | |
| - | ===== 6. Run MIX automatically as a Linux service ===== | + | Before configuring automatic startup, stop the manually started |
| - | Linux uses **systemd** to manage services. | + | If MIX is running in the foreground, press: |
| - | A MIX systemd service starts MIX automatically during boot and restarts it if the process stops. | + | <code text> |
| - | + | Ctrl+C | |
| - | MIX console output should also be redirected to its own log file. | + | </ |
| - | First make sure a manually started | + | Verify that no MIX HeadlessController |
| <code text> | <code text> | ||
| Line 275: | Line 274: | ||
| </ | </ | ||
| - | If MIX was started manually, stop it before starting the systemd service. | + | No output should be returned. |
| - | ==== If no MIX service | + | ===== 8. Run MIX automatically as a Linux service |
| - | Create the log directory if necessary: | + | Create the log directory if it does not already exist: |
| <code text> | <code text> | ||
| Line 315: | Line 314: | ||
| Save with **Ctrl+O**, **Enter**, **Ctrl+X**. | Save with **Ctrl+O**, **Enter**, **Ctrl+X**. | ||
| - | Then run: | + | Reload systemd, enable MIX at boot, and start it: |
| <code text> | <code text> | ||
| Line 321: | Line 320: | ||
| sudo systemctl enable mix | sudo systemctl enable mix | ||
| sudo systemctl start mix | sudo systemctl start mix | ||
| + | </ | ||
| + | |||
| + | Verify the service: | ||
| + | |||
| + | <code text> | ||
| systemctl status mix --no-pager | systemctl status mix --no-pager | ||
| </ | </ | ||
| - | Verify that the service shows: | + | Look for: |
| <code text> | <code text> | ||
| Line 330: | Line 334: | ||
| </ | </ | ||
| - | The running process should be Java 25 executing: | + | Verify the MIX Java process: |
| <code text> | <code text> | ||
| - | com.ergotech.mix.server.HeadlessController | + | pgrep -af 'com.ergotech.mix.server.HeadlessController' |
| </ | </ | ||
| - | Verify: | + | The process should use: |
| <code text> | <code text> | ||
| - | pgrep -af 'com.ergotech.mix.server.HeadlessController' | + | / |
| </ | </ | ||
| - | Also verify | + | Verify |
| <code text> | <code text> | ||
| Line 348: | Line 352: | ||
| </ | </ | ||
| - | ==== If MIX already has a service | + | ===== 9. Verify |
| - | Do not replace an existing working service without first inspecting it. | + | MIX console output is written to: |
| - | + | ||
| - | Run: | + | |
| <code text> | <code text> | ||
| - | sudo systemctl cat mix.service | + | /home/mix/ |
| </ | </ | ||
| - | Confirm that the effective service configuration uses: | + | Verify: |
| - | + | ||
| - | * the intended MIX installation directory, | + | |
| - | * '' | + | |
| - | * Java 25, | + | |
| - | * the correct MIX console log path. | + | |
| - | + | ||
| - | If the existing service does not meet the current requirements, | + | |
| - | + | ||
| - | If the existing service already starts MIX correctly and only console redirection needs to be added, a systemd override can be used rather than replacing the original service. | + | |
| - | + | ||
| - | ===== 7. Verify | + | |
| - | + | ||
| - | Run: | + | |
| <code text> | <code text> | ||
| Line 377: | Line 366: | ||
| </ | </ | ||
| - | The log should contain | + | Check the MIX build, pre-license key, and license result: |
| - | + | ||
| - | Useful checks include: | + | |
| <code text> | <code text> | ||
| Line 394: | Line 381: | ||
| </ | </ | ||
| - | It is normal for Linux system logs to continue containing operating-system messages such as network or WiFi status messages. | + | Verify the console |
| - | + | ||
| - | The important result is that MIX and Java console | + | |
| <code text> | <code text> | ||
| - | / | + | ls -l / |
| </ | </ | ||
| - | When systemd | + | With the validated |
| <code text> | <code text> | ||
| Line 408: | Line 393: | ||
| </ | </ | ||
| - | even though MIX itself runs as the '' | + | ===== 10. Limit the MIX console log ===== |
| - | + | ||
| - | ===== 8. Limit the MIX console log ===== | + | |
| Create: | Create: | ||
| Line 432: | Line 415: | ||
| } | } | ||
| </ | </ | ||
| - | |||
| - | Do not add a '' | ||
| Save with **Ctrl+O**, **Enter**, **Ctrl+X**. | Save with **Ctrl+O**, **Enter**, **Ctrl+X**. | ||
| Line 446: | Line 427: | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| - | If the current file is smaller than 5 MB, '' | + | If the current file is smaller than 5 MB, '' |
| - | To fully test the rule, force one rotation: | + | To verify |
| <code text> | <code text> | ||
| Line 457: | Line 438: | ||
| </ | </ | ||
| - | Verify: | + | Check the result: |
| <code text> | <code text> | ||
| ls -lh / | ls -lh / | ||
| systemctl status mix --no-pager | systemctl status mix --no-pager | ||
| + | pgrep -af ' | ||
| </ | </ | ||
| - | The previous contents should be copied to: | + | The previous |
| <code text> | <code text> | ||
| Line 470: | Line 452: | ||
| </ | </ | ||
| - | and the active '' | + | The active '' |
| - | Generate a new MIX request: | + | Generate a new request: |
| <code text> | <code text> | ||
| Line 479: | Line 461: | ||
| </ | </ | ||
| - | Then verify | + | Verify |
| <code text> | <code text> | ||
| Line 486: | Line 468: | ||
| </ | </ | ||
| - | A successful test will show a new request similar to: | + | A successful test should |
| <code text> | <code text> | ||
| Line 492: | Line 474: | ||
| </ | </ | ||
| - | '' | + | ===== 11. Reboot and verify MIX ===== |
| - | + | ||
| - | ===== 9. Reboot and verify MIX ===== | + | |
| Reboot: | Reboot: | ||
| Line 502: | Line 482: | ||
| </ | </ | ||
| - | After the Raspberry Pi comes back online, reconnect | + | After the Raspberry Pi comes back online, reconnect: |
| - | Verify | + | <code text> |
| + | ssh mix@< | ||
| + | </ | ||
| + | |||
| + | Verify | ||
| <code text> | <code text> | ||
| Line 522: | Line 506: | ||
| </ | </ | ||
| - | Verify the post-reboot startup | + | Verify |
| <code text> | <code text> | ||
| Line 529: | Line 513: | ||
| </ | </ | ||
| - | Also check: | + | Verify: |
| - | <code text> | + | * MIX is '' |
| - | df -h / | + | * MIX is running with Java 25. |
| - | ls -lh / | + | * Port 7226 is listening. |
| - | ls -lh / | + | * The current MIX build started successfully. |
| - | cat / | + | |
| - | </ | + | * '' |
| Finally, open: | Finally, open: | ||
| Line 544: | Line 528: | ||
| </ | </ | ||
| - | and confirm | + | and verify |
| - | + | ||
| - | Verify: | + | |
| - | + | ||
| - | * MIX is '' | + | |
| - | * MIX is running with Java 25. | + | |
| - | * Port 7226 is listening. | + | |
| - | * The runtime reports a valid IOT system license. | + | |
| - | * '' | + | |
| - | * The deployed MIStudio | + | |
| - | * The SD card has plenty of free space. | + | |
| - | * Linux system logs remain bounded. | + | |
| - | * The boot-maintenance log shows a successful run after the reboot. | + | |
| - | + | ||
| - | At this point the Raspberry Pi MIX runtime, MIStudio deployment path, automatic startup, licensing, web access, and console-log rotation have been verified. | + | |
| - | If this SD card will become a master image, verify | + | At this point MIX is installed, licensed, configured for automatic startup, accepting MIStudio deployments, |
installingmixonrpi.1793131999.txt.gz · Last modified: by tputman
