2023-Education-Board-Project / scratch-link

Device interoperability layer for Windows and MacOS
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Scratch Link

Scratch Link is a helper application which allows Scratch 3.0 to communicate with hardware peripherals. Scratch Link replaces the Scratch Device Manager and Scratch Device Plug-in.

System Requirements:

Minimum
macOS 10.10 "Yosemite"
Windows 10 Version 1709 (build 16299) "Fall Creators Update" or newer

Using Scratch Link with Scratch 3.0

To use Scratch Link with Scratch 3.0:

  1. Install and run Scratch Link
  2. Open Scratch 3.0
  3. Select the "Add Extension" button (looks like Scratch blocks with a + at the bottom of the block categories list)
  4. Select a compatible extension such as the micro:bit or LEGO EV3 extension.
  5. Follow the prompts to connect your peripheral.
  6. Build a project with the new extension blocks. Scratch Link will help Scratch communicate with your peripheral.

Development: Getting started

Documentation

The general network protocol and all supported hardware protocols are documented in Markdown files in the Documentation subdirectory. Please note that network protocol stability and compatibility are high priorities for this project. Changes to the protocol are unlikely to be accepted without very strong justification combined with thorough documentation.

Please use markdownlint to check documentation changes before submitting a pull request.

Secure WebSockets

Previous versions of Scratch Link used Secure WebSockets (wss://) to communicate with Scratch. This is no longer the case: new versions of Scratch Link use regular WebSockets (ws://). It is no longer necessary to prepare an SSL certificate for Scratch Link.

This change causes an incompatibility with some browsers, including Safari. An upcoming version of Scratch Link will resolve this incompatibility.

macOS

The macOS version of this project is in the macOS subdirectory. It uses Swift 5.2 and the Swift Package Manager.

Developer prerequisites on macOS, most of which are available through Homebrew:

The build is primarily controlled through make:

Windows

The Windows version of this project is in the Windows subdirectory.

Prerequisites:

Optional:

Build, run, and debug by opening the Solution (*.sln) file in Visual Studio.

Signing the MSI installer

This section applies to Scratch Team members only.

To build and sign the ScratchLinkSetup installer (MSI), you must install the appropriate signing certificate. Contact another Scratch Team member to obtain the certificate, then install it with these steps:

  1. Open "Manage User Certificates"
  2. Expand "Personal"
  3. Right-click "Certificates" under "Personal"
  4. Select "Import..."
  5. Follow the steps to import the signing certificate.
    • You may need to change the file browser to Personal Information Exchange (*.pfx;*.p12).
    • When prompted, enter the password for the certificate file you're importing.
    • On the last step, make sure the certificate store is listed as "Personal"

You can verify that you've installed the correct certificate by comparing the thumbprint in the Certificate Manager to the one listed in the post-build event in the ScratchLinkSetup project.

Known Issues for Developers

  1. Building the ScratchLinkSetup project may fail with a System.IO.DirectoryNotFoundException if the Windows case sensitivity flag is enabled on any directory in the path to the Scratch Link project files. This flag can become enabled when WSL is used to create or manipulate directories.
    • Solution: Use fsutil file queryCaseSensitiveInfo myDirName to check if myDirName has its case sensitivity flag set. If so, use fsutil file setCaseSensitiveInfo myDirName disable to clear the flag.
    • More detail: https://github.com/wixtoolset/issues/issues/5809
  2. The make step may fail if the path to the Scratch Link directory contains whitespace.