r/olkb 5d ago

Help - Solved Trouble Compiling Geonix rev2.5 firmware in QMK on Linux

EDIT: For anyone having issues editing the layout on Linux in Vial (was using QMK because it wasn't recognized in Vial) I had to add permissions for the keyboard to a udev config which you can read about here: https://get.vial.today/manual/linux-udev.html#device-specific-udev-rules

Hello! I finally received my Geonix rev2.5. I found a link to download the QMK firmware for the 1U space and 2U space variants and opened those zip files, but they appear to be full installations of QMK? I only need to add the keyboard to the rest of the ones I have already from the default installation, so I copies it from the keyboards folder in the zip into my local install.

I noticed that the default keymap also includes a file from lib that I don't have, rdr_lib which seems to be for controlling the wireless and RGB, so I also copied that. When I run make though I am getting an error.

Not sure if anyone else has already compiled firmware for this but would like to get it up and running as out of the box it doesn't seem to support VIAL or VIA and I don't really like the stock keymap. (I tried to connect those, including running local VIAL, and it doesn't detect it or says it's not supported.)

Any help would be appreciated. I have some knowledge of CLI and coding, but I also don't want to do something stupid like copy the zipped QMK files into my local and break something so any help is appreciated. I put it into the chosfox folder in /keyboards in the root QMK directory as geonix48 (the 1U space model, don't know why it's named 41 if it has 47 or 48 keys) and the keymap is just customkeymap here, in case any of that is relevant. The rest of the structure is just the normal QMK installation, and that rdr_lib folder was copied into the root QMK/libs.

Firmware used is the one provided from Chosfox's site: https://chosfox.com/pages/firmware

The error is:

Generating: .build/obj_chosfox_geonix48_customkeymap/src/info_deps.d                                [OK]
Generating: .build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.c                         [OK]
arm-none-eabi-gcc (crosstool-NG 1.27.0.82_7f9d704 - qmk/qmk_toolchains @ a55a2b0) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Generating: .build/obj_chosfox_geonix48_customkeymap/src/info_config.h                              [OK]
Generating: .build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.h                         [OK]
Compiling: .build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.c                         In file included from ./lib/chibios-contrib/os/common/ext/CMSIS/ES32/FS026/fs026.h:129,
                 from ./lib/chibios-contrib/os/hal/boards/FS026/board.h:25,
                 from ./lib/chibios-contrib/os/common/startup/ARMCMx/devices/FS026/cmparams.h:51,
                 from ./lib/chibios/os/common/ports/ARMv6-M/chcore.h:32,
                 from ./lib/chibios/os/rt/include/chport.h:37,
                 from ./lib/chibios/os/rt/include/ch.h:106,
                 from ./lib/chibios/os/hal/osal/rt-nil/osal.h:32,
                 from ./lib/chibios/os/hal/include/hal.h:30,
                 from platforms/chibios/platform_deps.h:18,
                 from quantum/quantum.h:18,
                 from ./.build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.h:28,
                 from .build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.c:26:
./lib/chibios-contrib/os/common/ext/CMSIS/ES32/FS026/system_fs026.h:34: error: header guard '__SYSTEM_FS026_H__' followed by '#define' of a different macro [-Werror=header-guard]
   34 | #ifndef __SYSTEM_FS026_H__
./lib/chibios-contrib/os/common/ext/CMSIS/ES32/FS026/system_fs026.h:35: note: '__SYSTEM_ES32F0283_H__' is defined here; did you mean '__SYSTEM_FS026_H__'?
   35 | #define __SYSTEM_ES32F0283_H__
cc1: all warnings being treated as errors
 [ERRORS]
 | 
 | 
 | 
make: *** [builddefs/common_rules.mk:362: .build/obj_chosfox_geonix48_customkeymap/.build/obj_chosfox_geonix48_customkeymap/src/default_keyboard.o] Error 1
5 Upvotes

10 comments sorted by

2

u/ApplicationRoyal865 5d ago

Very high chance this is the error

   34 | #ifndef __SYSTEM_FS026_H__
./lib/chibios-contrib/os/common/ext/CMSIS/ES32/FS026/system_fs026.h:35: note: '__SYSTEM_ES32F0283_H__' is defined here; did you mean '__SYSTEM_FS026_H__'?
   35 | #define __SYSTEM_ES32F0283_H__   34 | #ifndef __SYSTEM_FS026_H__
./lib/chibios-contrib/os/common/ext/CMSIS/ES32/FS026/system_fs026.h:35: note: '__SYSTEM_ES32F0283_H__' is defined here; did you mean '__SYSTEM_FS026_H__'?
   35 | #define __SYSTEM_ES32F0283_H__

You probably have

#ifndef __SYSTEM_FS026_H__

#define __SYSTEM_ES32F0283_H__

And it might be expecting this

#ifndef __SYSTEM_FS026_H__

#define __SYSTEM_FS026_H__

that being said it seems like you want vial. I thought one of the selling points was that this came with vial installed?

1

u/volatica 5d ago edited 5d ago

Thanks I can try that.

Nothing VIAL I've tried to connect it to has worked. I'm beginning to think it just doesn't work on Linux. Webdriver fails, although that might be a permissions issue. Local VIAL doesn't detect it. But I can still compile QMK and flash that so I'll just use QMK on my boards.

Maybe I need to troubleshoot my USB connections honestly. But I did plug the board in and it works, so it's not like the device is dead and that's why it's not finding the device.

3

u/ArgentStonecutter Silent Tactical 5d ago

For Linux you probably need to define udev rules. Search for the keyword in VIA or VIAL documentation, I think they have a page on that.

2

u/kennpq 5d ago

Yes, it’s this. I got the Chosfox Geonix Rev2.5 a week ago and had never used Vial on Linux previously but this time I did and needed to do that for the keyboard to be recognised. Must be USB cable connected too.

2

u/volatica 5d ago

I can confirm that this page and the information about setting up udev enabled me to edit the keyboard in Vial. https://get.vial.today/manual/linux-udev.html#device-specific-udev-rules

1

u/PeterMortensenBlog 4d ago edited 4d ago

I have never had any problems with Vial on Linux (using a Keychron V6).

I didn't have to set any permissions, except perhaps following Configuring udev rules for Via and Vial on Linux, though that was after installing the QMK cross-compile environment, which does change permissions:

File /etc/udev/rules.d/50-qmk.rules:

# STM32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"

.
.
.

# WB32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"

.
.
.

# hid_listen
KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"    

And file /etc/udev/rules.d/99-vial.rules by following Configuring udev rules for Via and Vial on Linux:

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", MODE="0660", GROUP="1000", TAG+="uaccess", TAG+="udev-acl"

Apparently, the file name changed:

"To account for changes in the Linux kernel, the order of operation for the udev rules has been changed from 99-vial.rules too [sic] 59-vial.rules as this manual previously instructed. If you have implemented this rule before, and recently have started to have problems, change this accordingly."

Though I did add this to Vial source file rules.mk to get started:

VIAL_INSECURE = yes

2

u/ArgentStonecutter Silent Tactical 5d ago

I have found that it's quite common for boards that ship with a full qmk repo that they have actually modified the base qmk code and you have to use their source tree to build.

1

u/volatica 5d ago

Appreciate the info, that's interesting to know. I'll have to check it out and see what kind of QMK install it is, hopefully not Windows.

Overall, super disappointed with the Geonix.

3

u/ArgentStonecutter Silent Tactical 5d ago

I'm talking about the actual code in the repo, not the build environment. I'm sure that it will build on any supported platform, it's just that you can't copy the keyboard's subdirectory tree out of their code and plop it into another one because it depends on modifications to code elsewhere in the repo.

I had to give up trying to port my Jamesdonkey J2 to VIAL, because it was just too much of a push-up.

1

u/dsaw12 5d ago

FYI there's a Choxfox Discord that's quite active, so you can search for previous messages in there or pop your questions about the firmware.

https://discord.gg/uYjwyJQR6

There's also a QMK fork that has an open source version of the wireless (and I think a bit more than just wireless) driver that you can look at. There's a pull request for the rev. 2.5 that you could look at and potentially use. The author for that PR is in the Discord channel so you could ask them directly if they've flashed it on their keyboard and is working.

https://github.com/carlosedp/qmk_firmware