Melvin-Abraham / Google-Assistant-Unofficial-Desktop-Client

A cross-platform unofficial Google Assistant Client for Desktop (powered by Google Assistant SDK)
Apache License 2.0
3.6k stars 401 forks source link

doesn't work on raspberry pi #49

Open Itai-Nelken opened 3 years ago

Itai-Nelken commented 3 years ago

Describe the bug I tried to build this app on Ubuntu 20.10 for the Raspberry Pi, npm install finished successfully but when running npm start the tray icon appears but nothing else works. clicking on the icon and selecting launch assistant doesn't do anything. I included a screenshot of the terminal output.

To Reproduce Steps to reproduce the behavior:

  1. use build instructions with npm on ubuntu 20.10 on a raspberry pi
  2. when typing npm start I get a few errors from MESA-LOADER and app doesn't work correctly.

Expected behavior I expected google assistant to start when clicking on start assistant in the tray icon menu.

Screenshots image

Desktop:

Additional context I tried running the next command in the build instructions (npm run dist) and it errored out, I think because of the errors when running npm start.

thecoder-001 commented 3 years ago

Can you please try to install following packages (or check if they are already installed)? This could possibly solve the issue, though I'm not 100% certain.

sudo apt-get install -y mesa-utils libgl1-mesa-glx libgl1-mesa-swx11

Ps: restart your pi after installing and then try again.

start2018 commented 3 years ago

Worked and ran well on raspbian (=NOOBS). Ubuntu on ARM could be problem.

Itai-Nelken commented 3 years ago

Worked and ran well on raspbian (=NOOBS).

didn't work for me on RPiOS (32bit)

Ubuntu on ARM could be problem.

why?

Can you please try to install following packages (or check if they are already installed)? This could possibly solve the issue, though I'm not 100% certain.

sudo apt-get install -y mesa-utils libgl1-mesa-glx libgl1-mesa-swx11

libgl1-mesa-swx11 isn't found in the RPi repository, I still have to test on Ubuntu.

start2018 commented 3 years ago

Worked and ran well on raspbian (=NOOBS).

didn't work for me on RPiOS (32bit)

Ubuntu on ARM could be problem.

why?

Can you please try to install following packages (or check if they are already installed)? This could possibly solve the issue, though I'm not 100% certain.

sudo apt-get install -y mesa-utils libgl1-mesa-glx libgl1-mesa-swx11

libgl1-mesa-swx11 isn't found in the RPi repository, I still have to test on Ubuntu.

  1. 12 Update (32-bit) ran well except "start()" related error. I believe that ARM could miss some libraries due to compatibility problems.
Melvin-Abraham commented 3 years ago

@Itai-Nelken Since I do not own a Pi, I cannot debug this issue from my side. Anyway, can you try the following?

I am not sure if this would work so do share the outcome...

Itai-Nelken commented 3 years ago

@Melvin-Abraham here is the terminal output when running npm start after adding that line to "app.js" (on 32bit RPiOS):

pi@Twisterpi4-ultra-4gb:~/Downloads/Google-Assistant-Unofficial-Desktop-Client $ npm start

> g-assist@1.0.0-rc.2 start
> electron .

/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/electron/index.js:14
    throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again')
    ^

Error: Electron failed to install correctly, please delete node_modules/electron and try installing again
    at getElectronPath (/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/electron/index.js:14:11)
    at Object.<anonymous> (/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/electron/index.js:18:18)
    at Module._compile (node:internal/modules/cjs/loader:1102:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1131:10)
    at Module.load (node:internal/modules/cjs/loader:967:32)
    at Function.Module._load (node:internal/modules/cjs/loader:807:14)
    at Module.require (node:internal/modules/cjs/loader:991:19)
    at require (node:internal/modules/cjs/helpers:92:18)
    at Object.<anonymous> (/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/electron/cli.js:3:16)
    at Module._compile (node:internal/modules/cjs/loader:1102:14)
npm ERR! code 1
npm ERR! path /home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client
npm ERR! command failed
npm ERR! command sh -c electron .

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2020-12-22T17_23_23_441Z-debug.log
pi@Twisterpi4-ultra-4gb:~/Downloads/Google-Assistant-Unofficial-Desktop-Client $
Melvin-Abraham commented 3 years ago

Can you try executing:

npm i -D electron@9.3.5 --arch=armv7l

Make sure you have the latest version of grpc (1.24.4 as of now), since, an older version of grpc dependency will not compile for this electron runtime version.


Ref: https://github.com/electron/electron/issues/8466#issuecomment-571802049

Itai-Nelken commented 3 years ago

how do I install grpc?
npm install grpc?

Melvin-Abraham commented 3 years ago

@Itai-Nelken Yes, you can directly execute that as well. Alternatively, you can check the version of grpc specified in package.json under dependencies, make it "1.24.4" if it's not and then run npm install.

Itai-Nelken commented 3 years ago

@Melvin-Abraham

@Itai-Nelken Yes, you can directly execute that as well. Alternatively, you can check the version of grpc specified in package.json under dependencies, make it "1.24.4" if it's not and then run npm install.

here is the output:

pi@Twisterpi4-ultra-4gb:~/Downloads/Google-Assistant-Unofficial-Desktop-Client $ npm install

> g-assist@1.0.0-rc.2 postinstall
> electron-builder install-app-deps

  • electron-builder  version=22.9.1
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=grpc@1.24.4, grpc@1.24.4 platform=linux arch=armv7l
  ⨯ cannot execute  cause=exit status 1
                    errorOut=npm ERR! code 1
    npm ERR! path /home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/grpc
    npm ERR! command failed
    npm ERR! command sh -c node-gyp rebuild
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@7.1.2
    npm ERR! gyp info using node@15.3.0 | linux | arm
    npm ERR! gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
    npm ERR! gyp info spawn /usr/bin/python3
    npm ERR! gyp info spawn args [
    npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    npm ERR! gyp info spawn args   'binding.gyp',
    npm ERR! gyp info spawn args   '-f',
    npm ERR! gyp info spawn args   'make',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/grpc/build/config.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/pi/.electron-gyp/9.3.5/include/node/common.gypi',
    npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
    npm ERR! gyp info spawn args   '-Dvisibility=default',
    npm ERR! gyp info spawn args   '-Dnode_root_dir=/home/pi/.electron-gyp/9.3.5',
    npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
    npm ERR! gyp info spawn args   '-Dnode_lib_file=/home/pi/.electron-gyp/9.3.5/<(target_arch)/node.lib',
    npm ERR! gyp info spawn args   '-Dmodule_root_dir=/home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/grpc',
    npm ERR! gyp info spawn args   '-Dnode_engine=v8',
    npm ERR! gyp info spawn args   '--depth=.',
    npm ERR! gyp info spawn args   '--no-parallel',
    npm ERR! gyp info spawn args   '--generator-output',
    npm ERR! gyp info spawn args   'build',
    npm ERR! gyp info spawn args   '-Goutput_dir=.'
    npm ERR! gyp info spawn args ]
    npm ERR! gyp: Undefined variable module_name in binding.gyp while trying to load binding.gyp
    npm ERR! gyp ERR! configure error 
    npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
    npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:376:20)
    npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:277:12)
    npm ERR! gyp ERR! System Linux 5.4.79-v7l+
    npm ERR! gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    npm ERR! gyp ERR! cwd /home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client/node_modules/grpc
    npm ERR! gyp ERR! node -v v15.3.0
    npm ERR! gyp ERR! node-gyp -v v7.1.2
    npm ERR! gyp ERR! not ok

    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/pi/.npm/_logs/2020-12-25T12_17_51_416Z-debug.log

                    command=/usr/bin/node /usr/lib/node_modules/npm/bin/npm-cli.js rebuild grpc@1.24.4 grpc@1.24.4
                    workingDir=
npm ERR! code 1
npm ERR! path /home/pi/Downloads/Google-Assistant-Unofficial-Desktop-Client
npm ERR! command failed
npm ERR! command sh -c electron-builder install-app-deps

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2020-12-25T12_17_51_552Z-debug.log
pi@Twisterpi4-ultra-4gb:~/Downloads/Google-Assistant-Unofficial-Desktop-Client $

here is the npm log if it helps: 2020-12-25T12_17_51_552Z-debug.log

obed9057 commented 3 years ago

well since raspberry pi is almost as simple as lunix its probably because of the os capabilities because your supposed to upgrade the os yourself so something in the base of the os needs to be able to check device information

busybox11 commented 2 years ago

No. It's because of the architecture and the drivers. The raspberry is using linux, not "almost" It just doesn't support at all or do it poorly and not out the box some features like hardware acceleration.

im-coder-lg commented 2 years ago

No. It's because of the architecture and the drivers.

Arch: armv7l

It just doesn't support at all or do it poorly and not out the box some features like hardware acceleration.

First, the Raspberry Pi is a brilliant piece of hardware. I have an 8 GB RAM one and it works well. It doesn't do works "poorly", it does them like a freaking boss. Hardware acceleration might be a problem, but GAUDC might break your Pi if the Pi is 2 GB or maybe even 1 GB.

Melvin-Abraham commented 2 years ago

Based on the logs provided, it seems that the script fails in the postinstall script where grpc is recompiled specifically for the electron runtime. Additionally, the pre-built binaries of grpc-electron for that platform/architecture doesn't seem to be available. One way to fix this would be to not recompile grpc for electron which could be done if it runs directly in a Node.js environment instead of an electron environment, effectively, decoupling grpc from electron. I'll try to figure out if that's possible to do in the development branch for v2.0.0 as it could also have other major benefits.