Visualizer not populating on gsender using pi4 Rasp ful OS


I received my Longmill recently and decided to purchase a pi4 and follow Paul’s gsender on raspberry pi4 setup from FB since it seemed to work well. I followed his steps exactly and when I startup gsender the visualizer is blank (see attached image).

I’m using a raspberry pi4 version B with raspberry pi full OS.
I am able to jog the machine and probe, etc. but cannot load a project without the visualizer.

I read through these forums and the FB group and have tried several remedies over the last couple of days. I’ve ensured chromium hardware acceleration is enabled and chrome://gpu shows webGL and webGL2 are hardware accelerated (see gpu log below). WebGL seems to work when i visit the website with the spinning box. I also attached an image of an error I receive when I startup gsender some of the time. It does not always pop up. I also verified the pi is fully updated.

I tried the latest version of gsener as well as the version in Paul’s video and saw the same results. I also tried imaging the pi to 64 bit pi OS and then to use the other versions of gsender in the Github repo but they only loaded the splash screen and froze.

I saw a related post by [Aer-O-Craft] and upgrading Windows seemed to fix the issue for them. But I am in a different OS. So any guidance you can provide would be greatly appreciated since I purchased the pi specifically for this application.


Graphics Feature Status

  • Canvas: Hardware accelerated
  • Canvas out-of-process rasterization: Disabled
  • Compositing: Hardware accelerated
  • Multiple Raster Threads: Enabled
  • Out-of-process Rasterization: Hardware accelerated
  • OpenGL: Enabled
  • Rasterization: Hardware accelerated
  • Skia Renderer: Enabled
  • Video Decode: Software only. Hardware acceleration disabled
  • Vulkan: Disabled
  • WebGL: Hardware accelerated
  • WebGL2: Hardware accelerated

Driver Bug Workarounds

  • clear_uniforms_before_first_program_use
  • count_all_in_varyings_packing
  • enable_webgl_timer_query_extensions
  • exit_on_context_lost
  • rely_on_implicit_sync_for_swap_buffers
  • disabled_extension_GL_KHR_blend_equation_advanced
  • disabled_extension_GL_KHR_blend_equation_advanced_coherent

Problems Detected

  • Accelerated video decode has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: video_decode
  • Clear uniforms before first program use on all platforms: [124764]
    Applied Workarounds: clear_uniforms_before_first_program_use
  • Mesa drivers in Linux handle varyings without static use incorrectly: [333885]
    Applied Workarounds: count_all_in_varyings_packing
  • Disable KHR_blend_equation_advanced until cc shaders are updated: [661715]
    Applied Workarounds: disable(GL_KHR_blend_equation_advanced), disable(GL_KHR_blend_equation_advanced_coherent)
  • Expose WebGL’s disjoint_timer_query extensions on platforms with site isolation: [808744]
    Applied Workarounds: enable_webgl_timer_query_extensions
  • Some drivers can’t recover after OUT_OF_MEM and context lost: [893177]
    Applied Workarounds: exit_on_context_lost
  • Avoid waiting on a egl fence before swapping buffers and rely on implicit sync on Broadcom GPUs: [938286]
    Applied Workarounds: rely_on_implicit_sync_for_swap_buffers

Version Information

Data exported 2021-12-16T06:59:53.054Z
Chrome version Chrome/95.0.4638.78
Operating system Linux 5.10.63-v7l+
Software rendering list URL gpu/config/software_rendering_list.json - chromium/src - Git at Google
Driver bug list URL gpu/config/gpu_driver_bug_list.json - chromium/src - Git at Google
ANGLE commit id 115fe74c8cee
2D graphics backend Skia/95 565e21c650d81ce861d0d54b0dd4fc247ad58ae6
Command Line /usr/lib/chromium-browser/chromium-browser --force-renderer-accessibility --enable-remote-extensions --enable-pinch --enable-crashpad --flag-switches-begin --enable-webgl-developer-extensions --enable-webgl-draft-extensions --enable-features=EnableDrDc,Vulkan --flag-switches-end

Driver Information

Initialization time 759
In-process GPU false
Passthrough Command Decoder false
Sandboxed true
GPU0 VENDOR= 0x0000 [Broadcom], DEVICE=0x0000 [V3D 4.2] ACTIVE
Optimus false
AMD switchable false
Driver vendor Mesa
Driver version 20.3.5
GPU CUDA compute capability major version 0
Pixel shader version 3.10
Vertex shader version 3.10
Max. MSAA samples 4
Machine model name
Machine model version
GL_VENDOR Broadcom
GL_VERSION OpenGL ES 3.1 Mesa 20.3.5
GL_EXTENSIONS GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_draw_instanced GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_ANGLE_pack_reverse_row_order GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_occlusion_query_boolean GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object GL_OES_depth_texture_cube_map GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_sRGB_write_control GL_EXT_separate_shader_objects GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_draw_elements_base_vertex GL_EXT_primitive_bounding_box GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_KHR_context_flush_control GL_NV_image_formats GL_OES_draw_elements_base_vertex GL_OES_primitive_bounding_box GL_OES_shader_io_blocks GL_OES_texture_border_clamp GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_EXT_buffer_storage GL_EXT_float_blend GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_texture_compression_s3tc_srgb GL_MESA_shader_integer_functions GL_KHR_parallel_shader_compile GL_EXT_EGL_image_storage GL_MESA_framebuffer_flip_y GL_EXT_texture_query_lod
Disabled Extensions GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Disabled WebGL Extensions
Window system binding vendor Mesa Project
Window system binding version 1.4
Window system binding extensions EGL_ANDROID_blob_cache EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_swap_buffers_with_damage EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap
GDMSESSION lightdm-xsession
Ozone platform x11
Direct rendering version unknown
Reset notification strategy 0x0000
GPU process crash count 0
gfx::BufferFormats supported for allocation and texturing R_8: not supported, R_16: not supported, RG_88: not supported, BGR_565: not supported, RGBA_4444: not supported, RGBX_8888: not supported, RGBA_8888: not supported, BGRX_8888: not supported, BGRA_1010102: not supported, RGBA_1010102: not supported, BGRA_8888: not supported, RGBA_F16: not supported, YVU_420: not supported, YUV_420_BIPLANAR: not supported, P010: not supported

I am having a very similar issue with the latest OS on my pi4 as well, although mine also fails to load the program completely sometimes, when it does load the visualizer section is blank. Everything else seems to work correctly though such as jogging, etc. as you have noted as well. Just ran into this today when getting my machine set back up and decided to give gsender a try. I have not found a solution but can at least confirm that the issue exists for more that just one person.

Tried running this on one of my other pi’s it worked there (although that one has the 7" touch screen on it which is too small for gSender). Realized that one has an older OS image based on Debian Buster and not Debian Bullseye. I installed the Debian Buster based Raspberry Pi OS on the pi 4 and now the visualizer area works as it does on the other pi, so there seems to be some compatibility issue with the more recent OS.

Hey folks,

This is related to the new Pi OS (Bullseye) since they moved from proprietary video drivers to their own open source implementation. We don’t have a fix quite yet, but we’ll let you know if we find a workaround in the meantime.


Thanks for your feedback guys. In the meantime I’ve had success using CNCJS on the Pi4. The slew while jogging the machine is not smooth like gsender and is sometimes buggy if I increase the jog step size while slewing. Also the probing of all axis in CNCJS is more cumbersome (could probably macro this but I’m brand new to this world). But it does the job. It sounds like I can reimage the Pi4 with legacy (Buster) OS and it should work based on Andrew’s feedback. But I think I’ll hold out for a bit if Sienci has updating gsender for Bullseye compatibility in their roadmap.

Best Regards,

What is the best program to use in the meantime?

There is a thread on this in the UGS world, the issue being related to the video driver in the Pi4. A simple, 2-line script wrapped around the start-up (disable some aspect of the driver), initialise UGS, wait 60s (to allow UGS to load and initialise the 3D graphics subsystem), then re-enable the driver. This worked perfectly whilst I was using UGS on Pi4. If I can find the thread I will post a link

As mentioned above, I’ve had success using CNCJS. Performed several projects now with no issues while using Fusion 360 to generate gcode. CNCJS has a very detailed guide on how to setup on a Pi4 here → Raspberry Pi Setup Guide | cncjs

Also found a thread here on how to borrow gsender’s 3 axis probing gcode for use in CNCJS. It was posted by Heyward here → CNCjs Probing not working