Processing on raspberry 3 without display

Hi everybody,

Status

I have slighlty winded question but it boils down to that I have a Java app that uses some of parts of processing to draw some text and output that via SPI to some LED-matrices on the MAX7219. I am running Xfvb because there is no display attached to the board.

The app pulls in it’s dependencies via a gradle.build:

dependencies {
    compile group: 'com.pi4j', name: 'pi4j-core', version: '1.2'
    compile 'com.google.apis:google-api-services-analytics:v3-rev136-1.22.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
    compile 'com.google.code.gson:gson:2.8.5'
    compile group: 'com.google.oauth-client', name: 'google-oauth-client-jetty', version: '1.11.0-beta'
    compile 'com.google.http-client:google-http-client-gson:1.19.0'
    compile group: 'org.processing', name: 'core', version: '3.3.7'
    compile 'com.google.apis:google-api-services-analyticsreporting:v4-rev139-1.25.0'
    compile group: 'org.ejml', name: 'ejml-all', version: '0.38'
    // https://mvnrepository.com/artifact/io.prometheus/simpleclient
    // compile group: 'io.prometheus', name: 'simpleclient', version: '0.8.0'
    // https://mvnrepository.com/artifact/io.prometheus/simpleclient_httpserver
    // compile group: 'io.prometheus', name: 'simpleclient_httpserver', version: '0.8.0'
    testCompile "org.spockframework:spock-core:1.1-groovy-2.4-rc-2"
    testCompile "cglib:cglib:2.2"
    implementation 'com.github.mgunlogson:cuckoofilter4j:1.0.1'
}

Naturally on my development machine this works without a hitch but on the raspberry pi both the P2D and the P3D renderer are not working, which I attributed to the virtual framebuffer.

Today

I realised that the performance (≈ 15 fps) is not exactly enough and I spent some time to get the GPU based renderers to work. Cue to me finding out about the special processing version that supports the weird GPU drivers of the raspi.

Question(s)

  • So my question is now, how do I use the custom version of processing together with the gradle setup that I have?
  • Do I need to use the java binary that is included or can I use the installed java-8?
  • Is it enough if I just add the jars from the custom version to my classpath or is there something else that I need to observe?

Thank you very much :slight_smile:

1 Like

In the end I downloaded the tar from the processing website, added a libs/ folder in the top level of my project and copied the all jars from processing-3.5.3/core/library in it.

I also added the following lines to my gradle.build:

    flatDir {
        dirs 'libs'
    }
    mavenCentral()
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
   ...
}
1 Like