Skip to content

Instantly share code, notes, and snippets.

@tmakerman
Last active November 22, 2024 09:28
Show Gist options
  • Save tmakerman/ee53a94c3cfc8362192ad9df20709547 to your computer and use it in GitHub Desktop.
Save tmakerman/ee53a94c3cfc8362192ad9df20709547 to your computer and use it in GitHub Desktop.
Running Bisq on Raspberry Pi

Running Bisq on Raspberry Pi

Working as of 2023-01-13

My setup:

Raspberry Pi 4 Model B Rev 1.5 2GB Raspberry Pi OS 64-bit with Desktop Release Date: September 22nd 2022

Bisq 1.9.9 built from source

Install Java

Build Bisq from source

  • git clone https://github.com/tmakerman/bisq.git
  • cd bisq
  • git checkout bisq-on-rpi-v1.9.9
  • ./gradlew build
    • some artifact dependency verifications fail, this can be ignored
    • build took ~ 26 min on my RPi 4 4GB
    • Bisq is ready to run, however when it initializes it will try to connect to Bitcoin network over Tor using its bundled Tor which fails and it will eventually time out. Instead setup a Tor hidden service and configure Bisq to connect through that…

Setup Tor

deb [arch=arm64] http://deb.torproject.org/torproject.org bullseye main
deb-src [arch=arm64] http://deb.torproject.org/torproject.org bullseye main
  • curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
  • sudo apt-get update
  • sudo apt-get install tor deb.torproject.org-keyring
  • Edit /etc/tor/torrc adding the following lines to bottom of file:
SOCKSPort 9050
Log notice stdout
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
HiddenServiceDir /var/lib/tor/bisq/
HiddenServicePort 8080 127.0.0.1:8080
  • Determine Tor group:
  • grep User /usr/share/tor/tor-service-defaults-torrc
  • sudo usermod -a -G debian-tor satoshi
    • replace satoshi with your username
  • sudo shutdown -r now
  • Wait for system to come back up
  • sudo systemctl enable tor
  • sudo systemctl start tor

Running Bisq

  • from RPi Desktop environment terminal window
  • cd bisq
  • ./bisq-desktop --torControlPort 9051 --torControlCookieFile=/var/run/tor/control.authcookie --torControlUseSafeCookieAuth
@nikicat
Copy link

nikicat commented Sep 7, 2023

@richardalg 👍 looking forward to your patches

@richardalg
Copy link

--- ./bisq.v12.gbuild.20230630 2023-06-30 22:55:18.000000000 +0100
+++ ./build.gradle.working 2023-09-07 11:43:51.420549887 +0100
@@ -3,12 +3,13 @@
mavenCentral()
maven { url "https://jitpack.io" }
maven { url "https://plugins.gradle.org/m2/" }

  •    mavenLocal()
    
    }
    dependencies {
    classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17'
    classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0'
    classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
  •    classpath 'org.openjfx:javafx-plugin:0.0.10'
    
  •    classpath 'org.openjfx:javafx-plugin:0.0.11'
    
    }
    }

@@ -23,15 +24,28 @@
}

configure(subprojects) {

  • apply plugin: 'java'
    apply plugin: 'com.google.osdetector'

  • sourceCompatibility = JavaVersion.VERSION_11

  • targetCompatibility = JavaVersion.VERSION_11

  • ext { // in alphabetical order
    grpcVersion = '1.42.1'

  •    javafxVersion = '16'
    
  •    javafxVersion = '17.0.1'
       protocVersion = '3.19.1'
    
       os = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os
    
    }
  • repositories {
  •    mavenCentral()
    
  •    maven { url 'https://jitpack.io' }
    
  • }
  • tasks.withType(JavaCompile) {
  •    options.encoding = 'UTF-8'
    
  • }
    }

@@ -159,6 +173,7 @@
implementation libs.kotlin.stdlib.jdk8
implementation libs.jetbrains.annotations
implementation libs.slf4j.api

  •    testImplementation libs.hamcrest
       runtimeOnly(libs.grpc.netty.shaded) {
           exclude(module: 'animal-sniffer-annotations')
           exclude(module: 'guava')
    

@@ -210,6 +225,7 @@
testImplementation libs.logback.classic
testImplementation libs.logback.core
testImplementation libs.apache.commons.lang3

  •    testImplementation libs.mockito
    
    }
    }

@@ -277,6 +293,8 @@
testAnnotationProcessor libs.lombok
testCompileOnly libs.lombok
testImplementation libs.natpryce.make.it.easy

  •    testImplementation libs.hamcrest
    
  •    testImplementation libs.mockito
    

    }

    test {
    @@ -326,7 +344,8 @@
    implementation libs.google.guava
    implementation libs.protobuf.java
    implementation libs.jcsv

  •    implementation libs.jfoenix
    
  •    // implementation libs.jfoenix                                       // until sshahine/JFoenix#1187
    
  • implementation("org.rationalityfrontline.workaround:jfoenix:17.0.1") // is fixed
    implementation libs.commons.io
    implementation libs.fontawesomefx
    implementation libs.fontawesomefx.commons
    @@ -352,6 +371,7 @@
    testAnnotationProcessor libs.lombok
    testCompileOnly libs.lombok
    testImplementation libs.natpryce.make.it.easy

  •    testImplementation libs.mockito
    

    }

    test {
    @@ -359,7 +379,6 @@
    }
    }

configure(project(':seednode')) {
apply plugin: 'com.github.johnrengelman.shadow'

@@ -404,6 +423,59 @@
}
}

+configure(project(':daemon')) {

  • distTar.enabled = true
  • mainClassName = 'bisq.daemon.app.BisqDaemonMain'
  • dependencies {
  •    implementation project(':proto')
    
  •    implementation project(':common')
    
  •    implementation project(':p2p')
    
  •    implementation project(':core')
    
  •    annotationProcessor libs.lombok
    
  •    compileOnly libs.javax.annotation
    
  •    compileOnly libs.lombok
    
  •    implementation libs.logback.classic
    
  •    implementation libs.logback.core
    
  •    implementation libs.google.gson
    
  •    implementation libs.google.guava
    
  •    implementation libs.protobuf.java
    
  •    implementation libs.apache.commons.lang3
    
  •    implementation libs.jetbrains.annotations
    
  •    implementation libs.slf4j.api
    
  •    implementation(libs.bitcoinj) {
    
  •        exclude(module: 'bcprov-jdk15on')
    
  •        exclude(module: 'guava')
    
  •        exclude(module: 'jsr305')
    
  •        exclude(module: 'okhttp')
    
  •        exclude(module: 'okio')
    
  •        exclude(module: 'protobuf-java')
    
  •        exclude(module: 'slf4j-api')
    
  •    }
    
  •    implementation(libs.google.guice) {
    
  •        exclude(module: 'guava')
    
  •    }
    
  •    implementation(libs.grpc.protobuf) {
    
  •        exclude(module: 'animal-sniffer-annotations')
    
  •        exclude(module: 'guava')
    
  •    }
    
  •    implementation(libs.grpc.stub) {
    
  •        exclude(module: 'animal-sniffer-annotations')
    
  •        exclude(module: 'guava')
    
  •    }
    
  •    runtimeOnly(libs.grpc.netty.shaded) {
    
  •        exclude(module: 'animal-sniffer-annotations')
    
  •        exclude(module: 'guava')
    
  •    }
    
  •    testAnnotationProcessor libs.lombok
    
  •    testCompileOnly libs.lombok
    
  •    testImplementation libs.junit.jupiter.api
    
  •    testImplementation libs.junit.jupiter.params
    
  •    testRuntimeOnly(libs.junit.jupiter.engine)
    
  • }
    +}

configure(project(':apitest')) {
mainClassName = 'bisq.apitest.ApiTestMain'

@@ -436,6 +508,7 @@
}

 test {
  •    useJUnitPlatform()
       outputs.upToDateWhen { false }          // Don't use previously cached test outputs.
       testLogging {
           showStackTraces = true              // Show full stack traces in the console.
    

@@ -502,13 +575,9 @@
}
testAnnotationProcessor libs.lombok
testCompileOnly libs.lombok

  •    testImplementation libs.junit.jupiter.api
    
  •    testImplementation libs.junit.jupiter.params
       testRuntimeOnly libs.javax.annotation
    
  • }
    -}

-if (hasProperty('buildScan')) {

  • buildScan {
  •    termsOfServiceUrl = 'https://gradle.com/terms-of-service'
    
  •    termsOfServiceAgree = 'yes'
    
  •    testRuntimeOnly(libs.junit.jupiter.engine)
    
    }
    }

@richardalg
Copy link

`--- ./bisq.v12.metadata.20230630 2023-06-30 22:55:18.000000000 +0100
+++ ./verification-metadata.xml.working 2023-09-05 18:34:20.230127731 +0100
@@ -503,14 +503,8 @@


  •     <artifact name="protoc-3.19.1-linux-x86_64.exe">
    
  •        <sha256 value="0b1099f537d44ee862b0c3708f32f1d66cfd76e2e2c1437f0c57a98476c20605" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="protoc-3.19.1-osx-x86_64.exe">
    
  •        <sha256 value="3431ad66f3bb24cd5196e92a561b0e03bf2906c894bc94d131daaa637094abac" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="protoc-3.19.1-windows-x86_64.exe">
    
  •        <sha256 value="06f65a95ee0fb212c45473e0e65cca824e4634b291fe8dd666068edf51e6ca4c" origin="Manually computed by Alva"/>
    
  •     <artifact name="protoc-3.19.1-linux-aarch_64.exe">
    
  •        <sha256 value="e18b554834c8c039223b83f3024afb8af9166666b4b9e54d83dcebfe8e28a929" origin="Generated by Gradle"/>
        </artifact>
        <artifact name="protoc-3.19.1.pom">
           <sha256 value="71a3da76c0c3b7bedb71c1e65f18f47193cc73ef1f27fc26b0a70715794019b7" origin="Generated by Gradle"/>
    

@@ -548,14 +542,6 @@


  •  <component group="com.jfoenix" name="jfoenix" version="9.0.10">
    
  •     <artifact name="jfoenix-9.0.10.jar">
    
  •        <sha256 value="8060235fec5eb49617ec8d81d379e8c945f6cc722d0645e97190045100de2084" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="jfoenix-9.0.10.pom">
    
  •        <sha256 value="b24601bd9cc1bad8a9a6ca1586715b488cf2d13ea0fce1acb65dd7c73510176a" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •  </component>
     <component group="com.natpryce" name="make-it-easy" version="4.0.1">
        <artifact name="make-it-easy-4.0.1.jar">
           <sha256 value="bf28701b65b88532a8bff65a636d7339d6c5db95b2b502799195a15c24fff45b" origin="Generated by Gradle"/>
    

@@ -698,14 +684,8 @@


  •     <artifact name="protoc-gen-grpc-java-1.42.1-linux-x86_64.exe">
    
  •        <sha256 value="5596b69eb69ed508bc69307f14340be702bdee2ff0ed33c1cafde02aefc9faaf" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="protoc-gen-grpc-java-1.42.1-osx-x86_64.exe">
    
  •        <sha256 value="f343841e08c9cbffdda92278f01f4ab9c2afb91b6125047e4c8d0aaf59736764" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="protoc-gen-grpc-java-1.42.1-windows-x86_64.exe">
    
  •        <sha256 value="cf8a24fd65e2e243aed74f79589d9b0194fd1f7a70063fd523cc0baeb44532a9" origin="Manually computed by Alva"/>
    
  •     <artifact name="protoc-gen-grpc-java-1.42.1-linux-aarch_64.exe">
    
  •        <sha256 value="9da908610c3006b9a8d27d790a93ad961fb881dda3335b4b4a3810425eff913b" origin="Generated by Gradle"/>
        </artifact>
        <artifact name="protoc-gen-grpc-java-1.42.1.pom">
           <sha256 value="9856d0a3e07df312825e698082b6ec6401cd15814ca74092ae58084f4925e784" origin="Generated by Gradle"/>
    

@@ -1618,74 +1598,62 @@


  •  <component group="org.openjfx" name="javafx" version="16">
    
  •     <artifact name="javafx-16.pom">
    
  •        <sha256 value="18d9784212d04475bfe4a5f4038e0fc78146f9a721eb6b9a52955d3b4b20d3ca" origin="Generated by Gradle"/>
    
  •  <component group="org.openjfx" name="javafx" version="17.0.1">
    
  •     <artifact name="javafx-17.0.1.pom">
    
  •        <sha256 value="4360be61425322ead03681349d99216b5203342a0a07f7a1c486316926661857" origin="Generated by Gradle"/>
        </artifact>
     </component>
    
  •  <component group="org.openjfx" name="javafx-base" version="16">
    
  •     <artifact name="javafx-base-16-linux.jar">
    
  •        <sha256 value="b825e220d685ecbd77e76f2cd52793132e6c9a10e23ee3361673cb29033413c0" origin="Generated by Gradle"/>
    
  •  <component group="org.openjfx" name="javafx-base" version="17.0.1">
    
  •     <artifact name="javafx-base-17.0.1-linux-aarch64.jar">
    
  •        <sha256 value="248d7fa222365d5843a77424c2d0af2d3a660a40995045a53ae151c55710e55d" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-base-16-mac.jar">
    
  •        <sha256 value="8cb4a023706d392d0a733aaee41be839e8418448ab0090a8115a9b909d595c77" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-base-17.0.1-linux.jar">
    
  •        <sha256 value="01d1b7fd8b84e14ad12b54abfcbc41fa8d223757a63bf988b4a33dad1060616e" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-base-16-win.jar">
    
  •        <sha256 value="23abcdffb6f92d8b37531080682034d01c177f1229118a2f7646331c51c6ed63" origin="Manually computed by Alva"/>
    
  •     <artifact name="javafx-base-17.0.1.jar">
    
  •        <sha256 value="045700bcabd5441a50964944f38babbee8fc2e8159179b8cb5e64d18274e3853" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-base-16.jar">
    
  •        <sha256 value="036955291b3633b6e11106df315f7a561218d31dcb4280078fe4d2414925f557" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="javafx-base-16.pom">
    
  •        <sha256 value="09fe0f2eda8b6f3d4c55b28e32b6b7b2782847add96a686d3048753baa781901" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-base-17.0.1.pom">
    
  •        <sha256 value="0ffb7659dc3aaa7043baa70566da558736614587d41caa0384fad59d7228b30c" origin="Generated by Gradle"/>
        </artifact>
     </component>
    
  •  <component group="org.openjfx" name="javafx-controls" version="16">
    
  •     <artifact name="javafx-controls-16-linux.jar">
    
  •        <sha256 value="fd0aba38a0dde9836845c6d671501f4c30e6cff6f2d72748f75742dbcfc74df9" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="javafx-controls-16-mac.jar">
    
  •        <sha256 value="4add6fdf120ab9c784dc6e700c158d411d9371aaba7bbb61ad9f9d016f2cce44" origin="Generated by Gradle"/>
    
  •  <component group="org.openjfx" name="javafx-controls" version="17.0.1">
    
  •     <artifact name="javafx-controls-17.0.1-linux-aarch64.jar">
    
  •        <sha256 value="a27e140ebc3b49289379e54d2d0eb76e42da56645547663f827ed6378ee7f733" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-controls-16-win.jar">
    
  •        <sha256 value="a7f6e4757163c38a5e6cf26b426e9daf788ad1b57513111d362b3bbbc298d13b" origin="Manually computed by Alva"/>
    
  •     <artifact name="javafx-controls-17.0.1-linux.jar">
    
  •        <sha256 value="b72463867e5098f8df4a0e4c833331ebfe1553ce37a347a33342343cb028da06" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-controls-16.jar">
    
  •        <sha256 value="dfdbe63f9717b2cd84c9fd34b28a8ddffdbe25cc1e4c2ff9f171f07ca725e0f4" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-controls-17.0.1.jar">
    
  •        <sha256 value="51d698cac8627e221152b4c421900f73f4af5abcd517008e695e43e22c40ec33" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-controls-16.pom">
    
  •        <sha256 value="1769aa2547256cfe316387d78375056587283b63f0614fa6e9b59231ef90edd0" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-controls-17.0.1.pom">
    
  •        <sha256 value="e0542cc8528fe825402c480da2a7e149401bdb3b943849f4a1f46939ff57bdd9" origin="Generated by Gradle"/>
        </artifact>
     </component>
    
  •  <component group="org.openjfx" name="javafx-fxml" version="16">
    
  •     <artifact name="javafx-fxml-16-linux.jar">
    
  •        <sha256 value="65249a5a47357283f21c5fa85b2e91255f7e5b0b86a2ec3dd2cc220541d7ae0b" origin="Generated by Gradle"/>
    
  •  <component group="org.openjfx" name="javafx-fxml" version="17.0.1">
    
  •     <artifact name="javafx-fxml-17.0.1-linux-aarch64.jar">
    
  •        <sha256 value="0d00d7a40b93ca68b2063f450f131cbb9e6a7fe3b98318304c65056f66ab872b" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-fxml-16-mac.jar">
    
  •        <sha256 value="b722e590930180ff7c43d34281202251e1fe8d1f81b16098cda78600780b7f46" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-fxml-17.0.1-linux.jar">
    
  •        <sha256 value="6b64a738afbb5acd100ca4af2f91561525fe812fe4dd39299c52a51af33d1090" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-fxml-16-win.jar">
    
  •        <sha256 value="e8313ffb783c26acbbc1267448bbfdf2f05126e5845a06c6f29a43db7483606d" origin="Manually computed by Alva"/>
    
  •     </artifact>
    
  •     <artifact name="javafx-fxml-16.pom">
    
  •        <sha256 value="7b3b1a717f5d3a67f1dadcc880de3677a25a5d4e8004b75c61cec8b044b013cd" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-fxml-17.0.1.pom">
    
  •        <sha256 value="3c9ed8df3409c3ba570cd0879c31eb560bac3fddb9cd191921af0f3a85fa769b" origin="Generated by Gradle"/>
        </artifact>
     </component>
    
  •  <component group="org.openjfx" name="javafx-graphics" version="16">
    
  •     <artifact name="javafx-graphics-16-linux.jar">
    
  •        <sha256 value="a2f5e1ea5aeb3ae57e63a1c853a4edf1e38b6f2fe76997ab864ad8b3c54bed53" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="javafx-graphics-16-mac.jar">
    
  •        <sha256 value="23a67ad877f283039a20dd827f68988c1f952fe4958d039c006762883f1f04ab" origin="Generated by Gradle"/>
    
  •  <component group="org.openjfx" name="javafx-graphics" version="17.0.1">
    
  •     <artifact name="javafx-graphics-17.0.1-linux-aarch64.jar">
    
  •        <sha256 value="816b30d6ced805c18355fb8437903df8e7e6d971e62924ef14c31651933ed24b" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-graphics-16-win.jar">
    
  •        <sha256 value="78124668c64db443cf3e105b9c2f6d7061e7c72ad5ad2de63a13adc46ef2ca8c" origin="Manually computed by Alva"/>
    
  •     <artifact name="javafx-graphics-17.0.1-linux.jar">
    
  •        <sha256 value="36b5f99ede138182c08fdff649d68dcbe7681e0cb61ef4bc8367fea8a0118e35" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-graphics-16.jar">
    
  •        <sha256 value="77533b2922a853a3e1350c8e6650f6cf746000d20efef69119c6324086883b95" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-graphics-17.0.1.jar">
    
  •        <sha256 value="53d60cef64ab6a1549da4d0239c009f8ef8084b62ecd18c3bda782b4d6520a8f" origin="Generated by Gradle"/>
        </artifact>
    
  •     <artifact name="javafx-graphics-16.pom">
    
  •        <sha256 value="b8fb99688eccae62be724bd72b34dfff1f8e1cddbe44649f5ef9a082e520c47e" origin="Generated by Gradle"/>
    
  •     <artifact name="javafx-graphics-17.0.1.pom">
    
  •        <sha256 value="5b1ed9d6a7dd5dd20103a4a7fd4c52b462c175c44658eb5b8d7fd5bd92c85231" origin="Generated by Gradle"/>
        </artifact>
     </component>
     <component group="org.openjfx" name="javafx-plugin" version="0.0.10">
    

@@ -1696,6 +1664,14 @@


  •  <component group="org.openjfx" name="javafx-plugin" version="0.0.11">
    
  •     <artifact name="javafx-plugin-0.0.11.jar">
    
  •        <sha256 value="ba87dcbdb74c6e3aa954f621ff5044cfb062a772c3407f39cca7830618c7bef6" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="javafx-plugin-0.0.11.pom">
    
  •        <sha256 value="51f70854b5018be5cfbf13b97d9d3fb207dbe8e52466c2f9d5a91c44b8ff69fa" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •  </component>
     <component group="org.opentest4j" name="opentest4j" version="1.2.0">
        <artifact name="opentest4j-1.2.0.jar">
           <sha256 value="58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2" origin="Generated by Gradle"/>
    

@@ -1757,6 +1733,14 @@


  •  <component group="org.rationalityfrontline.workaround" name="jfoenix" version="17.0.1">
    
  •     <artifact name="jfoenix-17.0.1.jar">
    
  •        <sha256 value="30cabdf875998d0b107e41b051c867cc275003f326c1795f0256f9a900a6d872" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •     <artifact name="jfoenix-17.0.1.module">
    
  •        <sha256 value="ad7d70774de3c6866866ae7640a431a9308da32eb347a8cd8246842bedd6658f" origin="Generated by Gradle"/>
    
  •     </artifact>
    
  •  </component>
     <component group="org.slf4j" name="slf4j-api" version="1.7.30">
        <artifact name="slf4j-api-1.7.30.jar">
           <sha256 value="cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57" origin="Generated by Gradle"/>`
    

@richardalg
Copy link

I put my patches up as a fork to tmakerman's code.
If I've messed up, don't be shy about telling me I'm an idiot, and why.

@tmakerman
Copy link
Author

Bisq v1.9.9 works on a Rock5B (aarch64). Thank you @tmakerman !
@nikicat

upgraded from bisq-on-rpi-v1.9.9 : Thank you for that @tmakerman !
@richardalg

You're welcome, glad it was helpful!

@richardalg thank you for posting the fork. I have started running on different hardware so I will likely not be keeping this up to date with new versions anymore.

@gus4rs
Copy link

gus4rs commented Oct 12, 2023

Following the guide resulted in Tor timing out when connecting via control port

./bisq-desktop --torControlPort=9050 --torControlCookieFile=/run/tor/control.authcookie --torControlUseSafeCookieAuth
ERROR b.n.p2p.network.TorNetworkNode: Could not connect to running Tor net.freehaven.tor.control.TorControlTimeoutError: We did not receive a response within one minute of waiting.
	at net.freehaven.tor.control.TorControlConnection.sendAndWaitForResponse(TorControlConnection.java:212)
	at net.freehaven.tor.control.TorControlConnection.authChallenge(TorControlConnection.java:1019)
	at org.berndpruenster.netlayer.tor.ExternalTor$SafeCookieAuthenticator.authenticate(ExternalTor.kt:102)
	at org.berndpruenster.netlayer.tor.ExternalTor.connect(ExternalTor.kt:158)
	at org.berndpruenster.netlayer.tor.ExternalTor.<init>(ExternalTor.kt:144)
	at bisq.network.p2p.network.RunningTor.getTor(RunningTor.java:68)
	at bisq.network.p2p.network.TorNetworkNode.lambda$createTorAndHiddenService$10(TorNetworkNode.java:167)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)

I can manually connect to the TorControlPort using Cookie Auth, with instructions from https://gist.github.com/ndsamuelson/3c83f38ae470c82ff87d2653af11716b#im-using-safe-cookie-authentication
I don't have firewall or selinux, so the problem is in Bisq itself

@richardalg
Copy link

@gus4rs
I have had problems connecting while a bitcoin version is running on my machine.
I figured that reporting this could get messy, hence I've kept my head down thus far.
I'd be interested to know if you have the same problem.

@gus4rs
Copy link

gus4rs commented Oct 13, 2023

I figured out my issue. The torControlPort was wrong. It now manages to contact the external Tor service, create an onion service, and connect to Bitcoin. Everything seems fine but I haven't tested buying/selling keeping it open for a while.

I also used a simplified patch on top of the last tag 1.9.14:

diff --git a/build-logic/commons/src/main/groovy/bisq.javafx.gradle b/build-logic/commons/src/main/groovy/bisq.javafx.gradle
index 9757770605..7db4944cdf 100644
--- a/build-logic/commons/src/main/groovy/bisq.javafx.gradle
+++ b/build-logic/commons/src/main/groovy/bisq.javafx.gradle
@@ -3,5 +3,5 @@ plugins {
 }
 
 javafx {
-    version = "16"
+    version = "17.0.1"
 }
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 60eaa42592..3ffc4608f7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -41,7 +41,7 @@ lombok = { strictly = '1.18.22' }
 mockito = { strictly = '4.0.0' }
 natpryce-make-it-easy = { strictly = '4.0.1' }
 netlayer = { strictly = '0.7.6' }
-openjfx-javafx-plugin = { strictly = '0.0.10' }
+openjfx-javafx-plugin = { strictly = '0.0.11' }
 protobuf = { strictly = '3.19.1' }
 qrgen = { strictly = '1.3' }
 slf4j = { strictly = '1.7.30' }
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 6f9917f32b..4b5eb78e5e 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -580,6 +580,9 @@
          <artifact name="protoc-3.19.1-windows-x86_64.exe">
             <sha256 value="06f65a95ee0fb212c45473e0e65cca824e4634b291fe8dd666068edf51e6ca4c" origin="Manually computed by Alva"/>
          </artifact>
+         <artifact name="protoc-3.19.1-linux-aarch_64.exe">
+            <sha256 value="e18b554834c8c039223b83f3024afb8af9166666b4b9e54d83dcebfe8e28a929" origin="Manually computed by Alva"/>
+         </artifact>
          <artifact name="protoc-3.19.1.pom">
             <sha256 value="71a3da76c0c3b7bedb71c1e65f18f47193cc73ef1f27fc26b0a70715794019b7" origin="Generated by Gradle"/>
          </artifact>
@@ -775,6 +778,9 @@
          <artifact name="protoc-gen-grpc-java-1.42.1-windows-x86_64.exe">
             <sha256 value="cf8a24fd65e2e243aed74f79589d9b0194fd1f7a70063fd523cc0baeb44532a9" origin="Manually computed by Alva"/>
          </artifact>
+         <artifact name="protoc-gen-grpc-java-1.42.1-linux-aarch_64.exe">
+            <sha256 value="9da908610c3006b9a8d27d790a93ad961fb881dda3335b4b4a3810425eff913b" origin="Manually computed by Alva"/>
+         </artifact>
          <artifact name="protoc-gen-grpc-java-1.42.1.pom">
             <sha256 value="9856d0a3e07df312825e698082b6ec6401cd15814ca74092ae58084f4925e784" origin="Generated by Gradle"/>
          </artifact>
@@ -1752,82 +1758,70 @@
             <sha256 value="0859ba0d5cfeefb13964e5862c036faa48a0bccff4932638fb13fe3445df33f7" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.openjfx" name="javafx" version="16">
-         <artifact name="javafx-16.pom">
-            <sha256 value="18d9784212d04475bfe4a5f4038e0fc78146f9a721eb6b9a52955d3b4b20d3ca" origin="Generated by Gradle"/>
+      <component group="org.openjfx" name="javafx" version="17.0.1">
+         <artifact name="javafx-17.0.1.pom">
+	     <sha256 value="4360be61425322ead03681349d99216b5203342a0a07f7a1c486316926661857" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.openjfx" name="javafx-base" version="16">
-         <artifact name="javafx-base-16-linux.jar">
-            <sha256 value="b825e220d685ecbd77e76f2cd52793132e6c9a10e23ee3361673cb29033413c0" origin="Generated by Gradle"/>
-         </artifact>
-         <artifact name="javafx-base-16-mac.jar">
-            <sha256 value="8cb4a023706d392d0a733aaee41be839e8418448ab0090a8115a9b909d595c77" origin="Generated by Gradle"/>
+      <component group="org.openjfx" name="javafx-base" version="17.0.1">
+         <artifact name="javafx-base-17.0.1-linux-aarch64.jar">
+            <sha256 value="248d7fa222365d5843a77424c2d0af2d3a660a40995045a53ae151c55710e55d" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-base-16-win.jar">
-            <sha256 value="23abcdffb6f92d8b37531080682034d01c177f1229118a2f7646331c51c6ed63" origin="Manually computed by Alva"/>
+         <artifact name="javafx-base-17.0.1-linux.jar">
+            <sha256 value="01d1b7fd8b84e14ad12b54abfcbc41fa8d223757a63bf988b4a33dad1060616e" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-base-16.jar">
-            <sha256 value="036955291b3633b6e11106df315f7a561218d31dcb4280078fe4d2414925f557" origin="Generated by Gradle"/>
+         <artifact name="javafx-base-17.0.1.jar">
+            <sha256 value="045700bcabd5441a50964944f38babbee8fc2e8159179b8cb5e64d18274e3853" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-base-16.pom">
-            <sha256 value="09fe0f2eda8b6f3d4c55b28e32b6b7b2782847add96a686d3048753baa781901" origin="Generated by Gradle"/>
+         <artifact name="javafx-base-17.0.1.pom">
+            <sha256 value="0ffb7659dc3aaa7043baa70566da558736614587d41caa0384fad59d7228b30c" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.openjfx" name="javafx-controls" version="16">
-         <artifact name="javafx-controls-16-linux.jar">
-            <sha256 value="fd0aba38a0dde9836845c6d671501f4c30e6cff6f2d72748f75742dbcfc74df9" origin="Generated by Gradle"/>
+      <component group="org.openjfx" name="javafx-controls" version="17.0.1">
+         <artifact name="javafx-controls-17.0.1-linux-aarch64.jar">
+            <sha256 value="a27e140ebc3b49289379e54d2d0eb76e42da56645547663f827ed6378ee7f733" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-controls-16-mac.jar">
-            <sha256 value="4add6fdf120ab9c784dc6e700c158d411d9371aaba7bbb61ad9f9d016f2cce44" origin="Generated by Gradle"/>
+         <artifact name="javafx-controls-17.0.1-linux.jar">
+            <sha256 value="b72463867e5098f8df4a0e4c833331ebfe1553ce37a347a33342343cb028da06" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-controls-16-win.jar">
-            <sha256 value="a7f6e4757163c38a5e6cf26b426e9daf788ad1b57513111d362b3bbbc298d13b" origin="Manually computed by Alva"/>
+         <artifact name="javafx-controls-17.0.1.jar">
+            <sha256 value="51d698cac8627e221152b4c421900f73f4af5abcd517008e695e43e22c40ec33" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-controls-16.jar">
-            <sha256 value="dfdbe63f9717b2cd84c9fd34b28a8ddffdbe25cc1e4c2ff9f171f07ca725e0f4" origin="Generated by Gradle"/>
-         </artifact>
-         <artifact name="javafx-controls-16.pom">
-            <sha256 value="1769aa2547256cfe316387d78375056587283b63f0614fa6e9b59231ef90edd0" origin="Generated by Gradle"/>
+         <artifact name="javafx-controls-17.0.1.pom">
+            <sha256 value="e0542cc8528fe825402c480da2a7e149401bdb3b943849f4a1f46939ff57bdd9" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.openjfx" name="javafx-fxml" version="16">
-         <artifact name="javafx-fxml-16-linux.jar">
-            <sha256 value="65249a5a47357283f21c5fa85b2e91255f7e5b0b86a2ec3dd2cc220541d7ae0b" origin="Generated by Gradle"/>
-         </artifact>
-         <artifact name="javafx-fxml-16-mac.jar">
-            <sha256 value="b722e590930180ff7c43d34281202251e1fe8d1f81b16098cda78600780b7f46" origin="Generated by Gradle"/>
-         </artifact>
-         <artifact name="javafx-fxml-16-win.jar">
-            <sha256 value="e8313ffb783c26acbbc1267448bbfdf2f05126e5845a06c6f29a43db7483606d" origin="Manually computed by Alva"/>
+      <component group="org.openjfx" name="javafx-fxml" version="17.0.1">
+         <artifact name="javafx-fxml-17.0.1-linux-aarch64.jar">
+            <sha256 value="0d00d7a40b93ca68b2063f450f131cbb9e6a7fe3b98318304c65056f66ab872b" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-fxml-16.pom">
-            <sha256 value="7b3b1a717f5d3a67f1dadcc880de3677a25a5d4e8004b75c61cec8b044b013cd" origin="Generated by Gradle"/>
+         <artifact name="javafx-fxml-17.0.1-linux.jar">
+            <sha256 value="6b64a738afbb5acd100ca4af2f91561525fe812fe4dd39299c52a51af33d1090" origin="Generated by Gradle"/>
          </artifact>
+         <artifact name="javafx-fxml-17.0.1.pom">
+            <sha256 value="3c9ed8df3409c3ba570cd0879c31eb560bac3fddb9cd191921af0f3a85fa769b" origin="Generated by Gradle"/>
+          </artifact>
       </component>
-      <component group="org.openjfx" name="javafx-graphics" version="16">
-         <artifact name="javafx-graphics-16-linux.jar">
-            <sha256 value="a2f5e1ea5aeb3ae57e63a1c853a4edf1e38b6f2fe76997ab864ad8b3c54bed53" origin="Generated by Gradle"/>
+      <component group="org.openjfx" name="javafx-graphics" version="17.0.1">
+         <artifact name="javafx-graphics-17.0.1-linux-aarch64.jar">
+            <sha256 value="816b30d6ced805c18355fb8437903df8e7e6d971e62924ef14c31651933ed24b" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-graphics-16-mac.jar">
-            <sha256 value="23a67ad877f283039a20dd827f68988c1f952fe4958d039c006762883f1f04ab" origin="Generated by Gradle"/>
+         <artifact name="javafx-graphics-17.0.1-linux.jar">
+            <sha256 value="36b5f99ede138182c08fdff649d68dcbe7681e0cb61ef4bc8367fea8a0118e35" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-graphics-16-win.jar">
-            <sha256 value="78124668c64db443cf3e105b9c2f6d7061e7c72ad5ad2de63a13adc46ef2ca8c" origin="Manually computed by Alva"/>
+         <artifact name="javafx-graphics-17.0.1.jar">
+            <sha256 value="53d60cef64ab6a1549da4d0239c009f8ef8084b62ecd18c3bda782b4d6520a8f" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-graphics-16.jar">
-            <sha256 value="77533b2922a853a3e1350c8e6650f6cf746000d20efef69119c6324086883b95" origin="Generated by Gradle"/>
+         <artifact name="javafx-graphics-17.0.1.pom">
+            <sha256 value="5b1ed9d6a7dd5dd20103a4a7fd4c52b462c175c44658eb5b8d7fd5bd92c85231" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="javafx-graphics-16.pom">
-            <sha256 value="b8fb99688eccae62be724bd72b34dfff1f8e1cddbe44649f5ef9a082e520c47e" origin="Generated by Gradle"/>
+       </component>
+           <component group="org.openjfx" name="javafx-plugin" version="0.0.11">
+         <artifact name="javafx-plugin-0.0.11.jar">
+            <sha256 value="ba87dcbdb74c6e3aa954f621ff5044cfb062a772c3407f39cca7830618c7bef6" origin="Generated by Gradle"/>
          </artifact>
-      </component>
-      <component group="org.openjfx" name="javafx-plugin" version="0.0.10">
-         <artifact name="javafx-plugin-0.0.10.jar">
-            <sha256 value="d03e96d9e27a7461bce6c05b537d36c22dc84ecb94d5c05d5ee967577a203ed5" origin="Generated by Gradle"/>
-         </artifact>
-         <artifact name="javafx-plugin-0.0.10.pom">
-            <sha256 value="b3d28522fe9423202d79d1cf87c4afa18ebdd44ea2e9a9dbcf5faf289d65318b" origin="Generated by Gradle"/>
+         <artifact name="javafx-plugin-0.0.11.pom">
+            <sha256 value="51f70854b5018be5cfbf13b97d9d3fb207dbe8e52466c2f9d5a91c44b8ff69fa" origin="Generated by Gradle"/>
          </artifact>
       </component>
       <component group="org.opentest4j" name="opentest4j" version="1.2.0">
@@ -1837,6 +1831,14 @@
          <artifact name="opentest4j-1.2.0.pom">
             <sha256 value="a96e671816c1ff8803bdec74c9241f025bdfb277da5d2b4ee02266405936f994" origin="Generated by Gradle"/>
          </artifact>
+      </component>
+         <component group="org.rationalityfrontline.workaround" name="jfoenix" version="17.0.1">
+         <artifact name="jfoenix-17.0.1.jar">
+            <sha256 value="30cabdf875998d0b107e41b051c867cc275003f326c1795f0256f9a900a6d872" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="jfoenix-17.0.1.module">
+            <sha256 value="ad7d70774de3c6866866ae7640a431a9308da32eb347a8cd8246842bedd6658f" origin="Generated by Gradle"/>
+         </artifact>
       </component>
       <component group="org.ow2" name="ow2" version="1.5">
          <artifact name="ow2-1.5.pom">

@richardalg
Copy link

@gus4rs
I've put some comments up on a fork I created for bisq-1.9.12 on the raspberry pi.
I have applied your patches to source code for bisq-1.9.14 downloaded from the bisq website.
My build fails with messages saying that the java compile was NOT FOUND and the the zulu11 code could not be probed - despite it being where it was supposed to be.
I'll have to find some time to look deeper into this, but in the mentime, if you have any hints or comments, I'll be grateful.

@richardalg
Copy link

It turned out that one of the unzipped files did not have write permission, not that difficult to fix.
but my attempts to get 1.9.14 up and running on my Pi are unsuccessful thus far.
gradlew builds, but invoking the bisq desktop as before, this quickly fails.
A window appears with a message about NodeHelper.treeShowingProperty.
Probably this bug : Recent change in JavaFX (17-ea+2) breaks JFXProgressBar · Issue #1187 · sshahine/JFoenix · GitHub
Recent change in JavaFX (17-ea+2) breaks JFXProgressBar

desktop src MainView has several instances of JFXProgressBar
which leaves me trying to figure out what to do next?
I suppose the next step is to wipe out all my installed java and try again?
Any thoughts anyone?

@tmakerman
Copy link
Author

Sorry @richardalg not sure. I haven't run on RPi for a while. I do remember running into issue somewhere along the way with that library, but I don't remember specifics. I saw at this comment
bisq-network/bisq#6758 (comment)
@napoly says they "Changed it for pure JavaFX ProgressBar"
maybe you could ask them to elaborate

@napoly
Copy link

napoly commented Mar 13, 2024

there is not enough gun powder to push this for Bisq as it all goes to Bisq 2.. I have done this for Haveno (which is a fork of Bisq) mainly in this commit: haveno-dex/haveno@c777133 it uses the newest java 21 with newest gradle 8.6 and newest java fx 21.. (not sure how it will act on Raspberry Pi)

@tmakerman
Copy link
Author

Thank you for the note @napoly

@richardalg
Copy link

richardalg commented Mar 15, 2024 via email

@HoldTheCellarDoor
Copy link

@tmakerman Thank you for creating this installer! I need help updating, because I get this error message upon launch:

Warning
Please update to the latest Bisq version. A mandatory update was released which disables trading for old versions. Please check out the Bisq Forum for more information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment