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`