Shine Ultra - RaspiOS

Hardware info on main page.

local links

pi5,

History

2024-12-29: pi5 - scanner - I connected up the foot pedal to the scanner. Tested in both chromium and firefox, but pressing the foot pedal doesn't do anything (as I expected).

2024-12-29: pi5 - scanner - if I run the browser (firefox) on a different machine, the web interface shows up, but I never get the "allow use of camera" popup. So that's good.

2024-12-29: pi5 - scanner - the web interface works in firefox, I can click on buttons and take pictures, select outline and so on. I even managed to get it to save a PDF sometimes. Unfortunately, firefox crashes after a while. In chromium it doesn't look like the "camera" button (take picture) works.

2024-12-29: pi5 - try npm start again

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm start

> scanner@0.0.1 start
> parcel src/index.html

Server running at http://localhost:1234
✨ Built in 1.39s

and I have a web page at the given url. Nice!

2024-12-29: pi5 - try npm run-script build-wasm again

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm run-script build-wasm

> scanner@0.0.1 build-wasm
> wasm-pack build --target web

[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
warning: unused imports: `GradientVotesResult`, `Line`, and `Point`
 --> src-rs/image/mod.rs:7:20
  |
7 | pub use document::{GradientVotesResult, Line, Point, Quad, ScoredQuad};
  |                    ^^^^^^^^^^^^^^^^^^^  ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: `scanner` (lib) generated 1 warning (run `cargo fix --lib -p scanner` to apply 1 suggestion)
    Finished `release` profile [optimized] target(s) in 0.02s
warning: the following packages contain code that will be rejected by a future version of Rust: wasm-bindgen v0.2.78
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO]: ⬇️  Installing wasm-bindgen...
    Updating crates.io index
  Downloaded wasm-bindgen-cli v0.2.78
  Downloaded 1 crate (40.9 KB) in 0.93s
  Installing wasm-bindgen-cli v0.2.78
    Updating crates.io index
     Locking 173 packages to latest compatible versions
      Adding env_logger v0.8.4 (available: v0.11.6)
      Adding iana-time-zone v0.1.60 (available: v0.1.61)
      Adding js-sys v0.3.55 (available: v0.3.76)
      Adding walrus v0.19.0 (available: v0.23.3)
      Adding wasm-bindgen v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-backend v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-cli-support v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-externref-xform v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-macro v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-macro-support v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-multi-value-xform v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-shared v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-threads-xform v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-wasm-conventions v0.2.78 (available: v0.2.99)
      Adding wasm-bindgen-wasm-interpreter v0.2.78 (available: v0.2.99)
[..]
    Finished `release` profile [optimized] target(s) in 2m 55s
warning: the following packages contain code that will be rejected by a future version of Rust: buf_redux v0.8.4, multipart v0.18.0, wasm-bindgen-cli v0.2.78, wasmparser v0.59.0
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
  Installing /home/tingo/.cache/.wasm-pack/.wasm-bindgen-cargo-install-0.2.78/bin/wasm-bindgen
  Installing /home/tingo/.cache/.wasm-pack/.wasm-bindgen-cargo-install-0.2.78/bin/wasm-bindgen-test-runner
  Installing /home/tingo/.cache/.wasm-pack/.wasm-bindgen-cargo-install-0.2.78/bin/wasm2es6js
   Installed package `wasm-bindgen-cli v0.2.78` (executables `wasm-bindgen`, `wasm-bindgen-test-runner`, `wasm2es6js`)
warning: be sure to add `/home/tingo/.cache/.wasm-pack/.wasm-bindgen-cargo-install-0.2.78/bin` to your PATH to be able to run the installed binaries
[INFO]: Optimizing wasm binaries with `wasm-opt`...
[INFO]: Optional fields missing from Cargo.toml: 'description', 'repository', and 'license'. These are not necessary, but recommended
[INFO]:    Done in 3m 31s
[INFO]: 📦   Your wasm pkg is ready to publish at /home/tingo/personal/projects/2024/rust/webcam/scanner/pkg.

aha! check it

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ ll pkg
total 540
drwxr-xr-x  2 tingo tingo   4096 Dec 29 10:29 ./
drwxr-xr-x 11 tingo tingo   4096 Dec 28 18:51 ../
-rw-r--r--  1 tingo tingo      1 Dec 29 10:25 .gitignore
-rw-r--r--  1 tingo tingo    237 Dec 29 10:29 package.json
-rw-r--r--  1 tingo tingo    680 Dec 29 10:29 README.md
-rwxr-xr-x  1 tingo tingo 262828 Dec 29 10:10 scanner*
-rw-r--r--  1 tingo tingo  53032 Dec 29 10:29 scanner_bg.wasm
-rw-r--r--  1 tingo tingo   1333 Dec 29 10:28 scanner_bg.wasm.d.ts
-rw-r--r--  1 tingo tingo   2670 Dec 29 10:28 scanner.d.ts
-rw-r--r--  1 tingo tingo  12189 Dec 29 10:28 scanner.js
-rw-r--r--  1 tingo tingo 190082 Dec 29 10:29 scanner.wasm

the file 'scanner' is from my misguided earlier attempt.

2024-12-29: pi5 - try the others

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm run-script build-wasm

> scanner@0.0.1 build-wasm
> wasm-pack build --target web

sh: 1: wasm-pack: not found

ok, that is something. looks like a rust thing, install it

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ cargo install wasm-pack
    Updating crates.io index
  Downloaded wasm-pack v0.13.1
  Downloaded 1 crate (428.3 KB) in 0.31s
  Installing wasm-pack v0.13.1
    Updating crates.io index
     Locking 229 packages to latest compatible versions
      Adding cargo_metadata v0.15.4 (available: v0.19.1)
      Adding dialoguer v0.10.4 (available: v0.11.0)
      Adding env_logger v0.10.2 (available: v0.11.6)
      Adding human-panic v1.2.3 (available: v2.0.2)
      Adding siphasher v0.3.11 (available: v1.0.1)
      Adding strsim v0.10.0 (available: v0.11.1)
      Adding toml v0.7.8 (available: v0.8.19)
      Adding which v4.4.2 (available: v7.0.1)
  Downloaded anstream v0.6.18
[..]
   Compiling wasm-pack v0.13.1
    Finished `release` profile [optimized] target(s) in 3m 20s
  Installing /home/tingo/.cargo/bin/wasm-pack
   Installed package `wasm-pack v0.13.1` (executable `wasm-pack`)

check

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ which wasm-pack
/home/tingo/.cargo/bin/wasm-pack

2024-12-29: pi5 - what does npm start show?

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm start

> scanner@0.0.1 start
> parcel src/index.html

Server running at http://localhost:1234
🚨 Build failed.

@parcel/core: Failed to resolve '../../pkg/scanner' from './src/workers/process.ts'

  /home/tingo/personal/projects/2024/rust/webcam/scanner/src/workers/process.ts:1:73
  > 1 | import init, { find_document, extract_document, Quad as WasmQuad } from '../../pkg/scanner';
  >   |                                                                         ^^^^^^^^^^^^^^^^^^^
    2 | import { Message, Messages } from './ipc'
    3 | 

@parcel/resolver-default: Cannot load file '../../pkg/scanner' in './src/workers'.
💡 Did you mean '../../pkg/scanner'?
💡 Did you mean '../../.vscode'?

hmm, try to copy the rust wasm binary to pkg/scanner and try again?

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ cp target/wasm32-unknown-unknown/release/scanner.wasm pkg/scanner

now do a npm start again

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm start

> scanner@0.0.1 start
> parcel src/index.html

Server running at http://localhost:1234
🚨 Build failed.

@parcel/core: No transformers found for pkg/scanner.

  /home/tingo/personal/projects/2024/rust/webcam/scanner/node_modules/parcel-config-pwa-manifest/index.json:2:3
    1 | {
  > 2 |   "transformers": {
  >   |   ^^^^^^^^^^^^^^^^^
  > 3 |     "*.{htm,html}": ["...", "parcel-transformer-pwa-manifest"],
  >   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 4 |     "__ptpm_raw:*": ["@parcel/transformer-raw"],
  >   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 5 |     "__ptpm_process:*": ["parcel-transformer-pwa-manifest"]
  >   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 6 |   }
  >   | ^^^
    7 | }

  /home/tingo/personal/projects/2024/rust/webcam/scanner/node_modules/@parcel/config-default/index.json:3:3
     2 |   "bundler": "@parcel/bundler-default",
  >  3 |   "transformers": {
  >    |   ^^^^^^^^^^^^^^^^^
  >  4 |     "types:*.{ts,tsx}": ["@parcel/transformer-typescript-types"],
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  >  5 |     "bundle-text:*": ["...", "@parcel/transformer-inline-string"],
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  >  6 |     "data-url:*": ["...", "@parcel/transformer-inline-string"],
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  >  7 |     "worklet:*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  >  8 |       "@parcel/transformer-worklet",
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  >  9 |       "..."
  >    | ^^^^^^^^^^^
  > 10 |     ],
  >    | ^^^^^^
  > 11 |     "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 12 |       "@parcel/transformer-babel",
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 13 |       "@parcel/transformer-js",
  >    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

doesn't look right.

2024-12-29: pi5 - try npm run

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm run
Lifecycle scripts included in scanner@0.0.1:
  start
    parcel src/index.html

available via `npm run-script`:
  build-wasm
    wasm-pack build --target web
  build
    tsc && tsc -p src/workers/tsconfig.json && parcel build src/index.html --public-url .

2024-12-29: I created this page.

2024-12-28: pi5 - try to install npm thing for scanner

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ npm install
npm WARN deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility

added 256 packages, and audited 257 packages in 1m

100 packages are looking for funding
  run `npm fund` for details

50 vulnerabilities (1 moderate, 49 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

2024-12-28: pi5 - rust - build scanner on RaspiOS needs wasm target

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ rustup target add wasm32-unknown-unknown
info: downloading component 'rust-std' for 'wasm32-unknown-unknown'
info: installing component 'rust-std' for 'wasm32-unknown-unknown'
 18.9 MiB /  18.9 MiB (100 %)  12.4 MiB/s in  1s ETA:  0s

build it

tingo@tipi5-linux:~/personal/projects/2024/rust/webcam/scanner $ cargo build
   Compiling quote v1.0.14
   Compiling cfg-if v1.0.0
   Compiling wasm-bindgen v0.2.78
   Compiling syn v1.0.84
   Compiling wasm-bindgen-backend v0.2.78
   Compiling wasm-bindgen-macro-support v0.2.78
   Compiling wasm-bindgen-macro v0.2.78
   Compiling js-sys v0.3.55
   Compiling console_error_panic_hook v0.1.7
   Compiling web-sys v0.3.55
   Compiling scanner v0.1.0 (/home/tingo/personal/projects/2024/rust/webcam/scanner)
warning: unused imports: `GradientVotesResult`, `Line`, and `Point`
 --> src-rs/image/mod.rs:7:20
  |
7 | pub use document::{GradientVotesResult, Line, Point, Quad, ScoredQuad};
  |                    ^^^^^^^^^^^^^^^^^^^  ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: `scanner` (lib) generated 1 warning (run `cargo fix --lib -p scanner` to apply 1 suggestion)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.67s
warning: the following packages contain code that will be rejected by a future version of Rust: wasm-bindgen v0.2.78
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`