Let's create the FSSK/FEXT = DONE !!!!

inozenz

16 Dec 2022, 13:01

dcopellino wrote:
16 Dec 2022, 12:36
20221215_171542.jpg
all well that's end well
omg i love this! great job man! also super nice carpet for the mouse hahaha :D

User avatar
dcopellino

16 Dec 2022, 16:39

inozenz wrote:
16 Dec 2022, 13:01
dcopellino wrote:
16 Dec 2022, 12:36
20221215_171542.jpg
all's well that ends well
omg i love this! great job man! also super nice carpet for the mouse hahaha :D
Thanks my friend. You caught my typos on the spot before I realised them out and I could fix them in seconds with all due respect to Shakespeare and Muirium. The latter, always on time.

Man from Mars

16 Dec 2022, 19:30

dcopellino wrote:
16 Dec 2022, 12:36
all's well that ends well
Very nice! How (When) can I book a "test drive"? :D

User avatar
dcopellino

16 Dec 2022, 19:54

Man from Mars wrote:
16 Dec 2022, 19:30
dcopellino wrote:
16 Dec 2022, 12:36
all's well that ends well
Very nice! How (When) can I book a "test drive"? :D
whenever you want, you're welcome to my home. Sorry, but i can't take it to the billiards :D

User avatar
daemonspudguy

31 Jan 2023, 03:18

How did you get the PCB files to order one?

User avatar
dcopellino

31 Jan 2023, 15:05

Here you are. Consider that you should order as minimum quantity order at least 5pcs from jclpcb. I've got 2 spare PCBs left. Send me a PM If you're interested, I could give them to you.

Edit: (it won't be worth having them sent to you from Italy)

vineyard88

02 Feb 2023, 14:29

dcopellino wrote:
16 Dec 2022, 12:36
.......continues from the post above

Fastening and unfastening all layers together or tuning a musical instrument
Spoiler:
20221020_150632.jpg
I had to devise this system, instead of the classic pair of books placed on the sides of the metal plate, in order to get the right tension throughout the surface during the process of inserting the screws. The wood sticks (2/3 horizontal and 1 vertical, the big pencil) protruded just enough to prevent the springs from touching the desk, letting the hammers lose their correct position in the barrel frame.
I know, I completely missed the building of the right tool, lost somewhere among DTs posts.
20221022_130847.jpg
I’ve done several MODs on Model Ms, both the bolt mod and the screw mods, even on a Model M122 but this time was different, very different due to the presence of a PCB that changed my references in terms of thickness and curvature tolerance of the parts involved. I had to pay more attention to filing the edges around the holes. Any inaccuracy in the alignment of the parts or excessive screwing force inevitably caused problems in obtaining the correct key feeling and relative click-clack sound. I had to close and re-open the layers at least 6 or 7 times in order to get the perfect combination. It was nothing more or less like tuning a musical instrument, in the true sense of the word.
Making extra room to house the controller into the bottom case. Look at my birth date.... :mrgreen:
Spoiler:
20221215_155716.jpg
Finally, the case closes. I had to cut the piece of plastic swown in the pic if I wanted the SMD controller with the attached microUSB cable to properly fit beneath the keyboard bed, avoiding to damage the Micro Pro the usb connector (oops).
Keep testing and other extra final steps.


Spoiler:
20221215_162315.jpg
Some final tests with Pandrew’s USB utils before closing the case. On the right side LED lights work even though in a weird way, due to some incompatibilities. It seems that the SMD controller supports natively only the IBM AT leds.
20221215_171542.jpg
all's well that ends well
This is so well done! hope you are enjoying the "FSSK" well.

User avatar
idollar
i$

06 Jul 2024, 16:31

dcopellino wrote:
16 Dec 2022, 12:22
Yet another model FEXT implementation,
(aka IBM model MotherFucker*)
Assuming that “Let's create the FSSK/FEXT = DONE !!!!” should never be considered a necro but rather an evergreen common thread, I’d like to share here my pic log presenting my personal FEXT implementation according to i$'s original post to whom I give credit and gratitude, along with all the other thread contributors.
Very nice !!!!
Very nice !!!!

Have you installed QMK or VIAL in the xwhatsit controller ?

i$

User avatar
idollar
i$

06 Jul 2024, 17:29

Hi,

You may know that I daily use the FSSKs which I originally created. I built three units of them:
1.- FSSK prototype which I daily use at the office
2.- FSSK prototype which is connected to my desk at home for home office
3.- FSSK v1.00

you can find he manual here viewtopic.php?f=7&t=13551&hilit=fssk+manual

I am very happy with the fact that the idea was further elaborated.
I am not fine with the fact that ellipse used FSSK name and all the work that I did to create his own version without asking for permission nor contacting me before. Since years he has been profiting from the works of others without offering the recognition they deserve (in my opinion). In any case, this is a different topic. Lets park it :)

I believe that people will not be interested in any firmware for the prototype. As I said before, there are just two of these keyboards.

I am sharing the HEX for FSSK v1.00 that was offered in the group buy long time ago. I also include the files which I used to compile the firmware.
I have NOT ported any code. I have just used the work described here (https://www.newfxx-firmware.nconx.com/) to create the template and the matrix required to compile the firmware.

PLEASE ensure that you have a rescue HEX firmware which works to rescue the keyboard in case needed.
I really wanted to include also a rescue HEX. I have not done it as it would just work on the FSSK prototype.

If you want to work with the code you should note that:

1.- a Vial executable will help to monitor the matrix and enter the bootloader mode
2.- Purdea Andrei 's util to check the matrix and levels as well as to enter the bootloader mode
3.- Consider soldering two cables to the reset pins of the xwhatsit controller to access them from outside the keyboard case (rescue).

It should be possible to create easily create a firmware for the FEXT, but as I never built one of these, I have not done it.

Please, let me know any question that you may have and report success or issues.
I am not very active in the forum due to work load, but I will monitor my messages to ensure that I can answer questions.

Many thanks to all who made this post possible. I really enjoy having VIAL in my keyboards !!!!!

i$

P.D.: there is no need to say that this post was typed with the FSSK prototype running VIAL :)
Attachments
vial_firmware_for_original_FSSK_V1.00.tar
(140 KiB) Downloaded 51 times
Last edited by idollar on 06 Jul 2024, 19:12, edited 1 time in total.

User avatar
dcopellino

06 Jul 2024, 18:06

20231215_171445.jpg
20231215_171445.jpg (3.13 MiB) Viewed 4520 times
Very happy to reading from to you again, i$. Your work has been of great inspiration to me and a very good hobby for the past months. My FEXT is outstanding and I like the clicking sound and tactility completely different from any other model Fs in my possession, and believe me... they are not few. Currently, I'm assembling my second FEXT (M/F mother*ucker). I spent about an year to gather all the model F springs I need, but now I'll be able to exploit the second of the 5 PCB I got jcbpcb made. I must say thanks to Jacobalbertus who offered all his help in providing me the controller(s), a solenoid driver and the last springs. This time I'd like to put a solenoid in and I won't never stop thanking pandrew, listofoptions and kmonov for their work on the controller and the firmware I don't think it to be VIAL compatible. Once finished this new project I hope to publish here some pics.
Any advices on how to make this new project vial compatible will be very appreciated, of course.

User avatar
idollar
i$

06 Jul 2024, 19:24

Hi dcopellino,

I was reading the posts where you described your adventure with the FEXT before I wrote in the forum today. I feel proud.

Which controller are you using ?

I am using the "historical" xwhatsit which started all of this. Without the work of Tom Wong-Cornall we would not have the opportunity to feel the "F" every day. ([url]hhttps://static.wongcornall.com/ibm-capsense-usb/[/url]).

I am 99% sure that you can run your keyboard in a QMK-VIAL firmware. Xwhatsit is based on the atmega32u2 which has limited memory. The trick is to limit the number of layers to 3, as well as the number of other features like tap-dance. When this is done, it is possible to compile an HEX that just fits:
Spoiler:

Code: Select all

...

Compiling: lib/lufa/LUFA/Drivers/USB/Core/Events.c                                                  [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c                                         [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/USBTask.c                                                 [OK]
Compiling: tmk_core/protocol/lufa/usb_util.c                                                        [OK]
Linking: .build/xwhatsit_ibm_fssk_idollar_xwhatsit_default_667128a.elf                              [OK]
Creating load file for flashing: .build/xwhatsit_ibm_fssk_idollar_xwhatsit_default_667128a.hex      [OK]
Copying xwhatsit_ibm_fssk_idollar_xwhatsit_default_667128a.hex to qmk_firmware folder               [OK]
Checking file size of xwhatsit_ibm_fssk_idollar_xwhatsit_default_667128a.hex                        [WARNINGS]

 * The firmware size is approaching the maximum - 27712/28672 (96%, 960 bytes free)

To do it in the config.h you define the limits:

Code: Select all

#define VIAL_TAP_DANCE_ENTRIES 4
#define VIAL_COMBO_ENTRIES 4
The procedure that I have used to "create the keyboard" was:

1.- create the vial.json file

I did that manually, matching the matrix of the PCB.
I have not covered the "number extension in the FEXT" but it should be simple to figure out the columns and rows using the "util"
Spoiler:

Code: Select all

{
    "name": "Original FSSK by idollar (V1.00)",
    "vendorId": "0x1209",
    "productId": "0x4704",
    "lighting": "none",
    "matrix": { "rows": 8, "cols": 14 },
    "layouts": {
        "labels": [
            "Show Extra Nav Pads",
            "Split Backspace",
            "Split Right Shift",
            ["Enter","ANSI Enter","Tie Enter","ISO Enter"],
            "Split Space",
            "Split Left Shift (ISO)"
        ],
        "keymap": [
            [{"x":2.5},"1,1",{"x":1},"1,0","1,3","1,2","0,2",{"x":0.5},"1,5","1,4","0,4","1,7",{"x":0.5},"1,6","1,9","0,8","1,8",{"x":0.25},"1,11","0,10","1,10"],
            [{"x":2.5,"y":0.5},"0,1","0,0","3,0","0,3","3,3","3,2","0,5","3,5","2,4","3,7","0,6","3,6","0,9",{"w":2},"3,8",{"x":0.25},"0,11","3,11","3,10"],
            [{"x":2.5,"w":1.5},"2,1","5,0","2,0","2,3","2,2","5,5","2,5","5,4","2,7","5,7","2,6","2,9","5,9",{"w":1.5},"2,8",{"x":0.25},"2,11","5,11","2,10"],
            [{"x":2.5,"w":1.75},"4,1","5,1","4,0","4,3","4,2","5,2","4,5","4,4","4,7","4,6","5,6","4,9",{"w":2.25},"4,8"],
            [{"x":2.5,"w":2.25},"7,1","7,0","7,3","6,2","7,2","7,5","6,5","7,4","7,7","6,6","7,6",{"w":2.75},"7,8",{"x":1.25},"7,11"],
            [{"x":2.5,"w":1.5},"6,1",{"x":1},{"w":1.5},"6,3",{"w":7},"6,4",{"w":1.5},"6,7",{"x":1},{"w":1.5},"6,8",{"x":0.25},"6,11","7,10","6,10"]
        ]
    }
}
2.- Edit xwhatsit.h as needed also to match the matrix.
Spoiler:

Code: Select all


/* Copyright 2020 Purdea Andrei
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once

#include "quantum.h"

/* This is a shortcut to help you visually see your layout.
 *
 * The first section contains all of the arguments representing the physical
 * layout of the board and position of the keys.
 *
 * The second converts the arguments into a two-dimensional array which
 * represents the switch matrix.
 */

#define LAYOUT_all( \
    k_esc,   f_1,f_2,f_3,f_4,f_5,f_6,f_7,f_8,f_9,f_10,f_11,f_12,                                             k_prsc,k_scr,  k_paus,  \
    k_tilde, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ext9,       k_ins, k_home, k_pgup,  \
    k_tab,   k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl,k_backslash,       k_del, k_end, k_pgdn,   \
    k_caps,   k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_hashtag, k_return, k_ex1, k_ex2, k_ex3,     \
    k_lshift, k_nonusbs, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_forwardslash, k_rshift, k_fn,   k_ex4, k_up,  k_ex5,    \
    k_lctrl, k_lgui, k_lalt,         k_space,                     k_extra, k_ralt, k_menu, k_rctrl,           k_left,k_down,k_right \
) \
{ \
    { k_1,      k_tilde,  f_4,   k_3,    f_7,     k_6,   k_0,            KC_NO,       f_11,           k_equals,      k_scr,      k_ins,  KC_NO,  KC_NO   }, \
    { f_1,      k_esc,    f_3,   f_2,    f_6,     f_5,   f_9,            f_8,         f_12,           f_10,          k_paus,     k_prsc, KC_NO,  KC_NO   }, \
    { k_w,      k_tab,    k_r,   k_e,    k_8,     k_y,   k_p,            k_i,         k_backslash,    k_squarebrop,  k_pgdn,     k_del,  KC_NO,  KC_NO   }, \
    { k_2,      KC_NO,    k_5,   k_4,    KC_NO,   k_7,   k_extra,        k_9,         k_backspace,    KC_NO,         k_pgup,     k_home, KC_NO,  KC_NO   }, \
    { k_s,      k_caps,   k_f,   k_d,    k_j,     k_h,   k_9,            k_k,         k_return,       k_singlequote, KC_NO,      KC_NO,  KC_NO,  KC_NO   }, \
    { k_q,      k_a,      k_g,   KC_NO,  k_u,     k_t,   k_8,            k_o,         KC_NO,          k_squarebrcl,  KC_NO,      k_end,  KC_NO,  KC_NO   }, \
    { KC_NO,    k_lctrl,  k_c,   k_lalt, k_space, k_n,   f_7,            k_ralt,      k_rctrl,        KC_NO,         k_right,    k_left, KC_NO,  KC_NO  }, \
    { k_z,      k_lshift, k_v,   k_x,    k_m,     k_b,   k_forwardslash, k_cm,        k_rshift,       KC_NO,         k_down,     k_up,   KC_NO,  KC_NO   }  \
}
3.- Create a layout json to build the firmware:
Spoiler:

Code: Select all

$ cat fssk_idollar.json 
{
  "keyboard": "xwhatsit/ibm/fssk_idollar/xwhatsit",
  "keymap": "default_667128a",
  "layout": "LAYOUT_all",
  "layers": [
    [
      "KC_ESC",
      "KC_F1",
      "KC_F2",
      "KC_F3",
      "KC_F4",
      "KC_F5",
      "KC_F6",
      "KC_F7",
      "KC_F8",
      "KC_F9",
      "KC_F10",
      "KC_F11",
      "KC_F12",
      "KC_PSCR",
      "KC_SLCK",
      "KC_PAUS",
      "KC_GRV",
      "KC_1",
      "KC_2",
      "KC_3",
      "KC_4",
      "KC_5",
      "KC_6",
      "KC_7",
      "KC_8",
      "KC_9",
      "KC_0",
      "KC_MINS",
      "KC_EQL",
      "KC_BSLS",
      "KC_BSPC",
      "KC_INS",
      "KC_HOME",
      "KC_PGUP",
      "KC_TAB",
      "KC_Q",
      "KC_W",
      "KC_E",
      "KC_R",
      "KC_T",
      "KC_Y",
      "KC_U",
      "KC_I",
      "KC_O",
      "KC_P",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_DEL",
      "KC_END",
      "KC_PGDN",
      "KC_CAPS",
      "KC_A",
      "KC_S",
      "KC_D",
      "KC_F",
      "KC_G",
      "KC_H",
      "KC_J",
      "KC_K",
      "KC_L",
      "KC_SCLN",
      "KC_QUOT",
      "KC_NUHS",
      "KC_ENT",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_LSFT",
      "KC_NUBS",
      "KC_Z",
      "KC_X",
      "KC_C",
      "KC_V",
      "KC_B",
      "KC_N",
      "KC_M",
      "KC_COMM",
      "KC_DOT",
      "KC_SLSH",
      "MO(1)",
      "KC_RSFT",
      "KC_TRNS",
      "KC_UP",
      "KC_TRNS",
      "KC_LCTL",
      "KC_LGUI",
      "KC_LALT",
      "KC_SPC",
      "KC_RGUI",
      "KC_RALT",
      "KC_APP",
      "KC_RCTL",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ],
    [
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "EEP_RST",
      "RESET",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "DEBUG",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS"
    ],
    [
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO"
    ]
  ],
  "author": "",
  "notes": ""
}

The FSSK firmware which I posted before shall work (without numpad) in your FEXT.
If you have the firmware that you are running saved, you can test VIAL. You can check also the VIAL application. You will always be able to come back to your original firmware.


I can help you to compile a full FEXT version of the firmware, if you are interested.

VIAL is nice. Creating macros in the fly and the tap-dance feature are so nice !
I assume that you are already running in QMK, isn´t it ?

Cheers

i$

User avatar
dcopellino

07 Jul 2024, 18:26

Hi I$, thanks for your kindly support and encouragement. As you will have understood, having quoted the SMD Universal controller designer team, I'm using that controller sporting an Atmel MEGA32U4. So, since the beginning I oriented my choices for the compiling of the firmware toward one forced direction: QMK, thanks to the ready configurator by Pandrew. Here my json/hex file
smd_universal_qmk_fext_haptic.zip
(23.68 KiB) Downloaded 52 times
. For my previous attempt I used QMK Toolbox for uploading the firmware on Caterina ProM1cro bootloader, but I've some confidence with AVR Dude too, when something goes wrong with the QMK Toolbox. I'd be glad if you'd help me compile a QMK-VIAL firmware giving me the opportunity to give it a try. Let me know if you need some more info about the keyboard layout I'm going to use on my 2nd FEXT,
TIA
Cheers

User avatar
idollar
i$

16 Jul 2024, 15:04

Hi,

Many thanks to RICO (@geekhack) for creating the Leyden Jar !

I just ordered some 10 Leyden_Jar boards from, JLCPCB.
I am programming extra features in my xwhatsit controllers and I literally reached the limits of the atmega32u2 (size 28460. max 28672)
Spoiler:

Code: Select all

~/qmk_firmware$ qmk compile 
Ψ Compiling keymap with gmake -j 1 xwhatsit/ibm/fssk_prototype/xwhatsit:default


WARNING: Some git submodules are out of date or modified.
 Please consider running make git-submodule.

Making xwhatsit/ibm/fssk_prototype/xwhatsit with keymap default

avr-gcc (GCC) 8.3.0
Copyright (C) 2018 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.

Size before:
   text	   data	    bss	    dec	    hex	filename
      0	  28460	      0	  28460	   6f2c	.build/xwhatsit_ibm_fssk_prototype_xwhatsit_default.hex

Compiling: quantum/via.c                                                                            [OK]
Linking: .build/xwhatsit_ibm_fssk_prototype_xwhatsit_default.elf                                    [OK]
Creating load file for flashing: .build/xwhatsit_ibm_fssk_prototype_xwhatsit_default.hex            [OK]
Copying xwhatsit_ibm_fssk_prototype_xwhatsit_default.hex to qmk_firmware folder                     [OK]
Checking file size of xwhatsit_ibm_fssk_prototype_xwhatsit_default.hex                              [WARNINGS]

 * The firmware size is approaching the maximum - 28460/28672 (99%, 212 bytes free)
Ordering was not difficult.

Step 1 - Order now - PARTS NOT AVAILABLE
- First I load the geber file
- I specified that they should solder the components (two changes from the default a) number of PCBs b) mounting the components)
- I loaded the BOM and CPL files in the next page
- I received a WARNING ! They did not have in stock all the components

Step 2 - ORDERING THE PARTS IN ADVANCE. Building my own stock.
I went back to "my username" -> parts manager -> BOM tool and loaded the BOM file
- This allowed me to "pre-order" the parts. Those missing were ordered in some days.
- I had to pay for these parts first

Step 3 - Wait for the parts to arrive
- I received an email for each part.

Step 4 - Order now - ALL PARTS AVAILABLE
- First I load the geber file
- I specified that they should solder the components (two changes from the default a) number of PCBs b) mounting the components)
- I loaded the BOM and CPL files in the next page
- Order and pay the PCB production and mounting them

All in all I paid some 107 euros including taxes and shipping to Europe. Some 10 euros per PCB.
FYI: Ellipse charges $49 + shipping loaded with the firmware, I guess

lets see how they work ... I may have made a mistake in the order :)
Last edited by idollar on 30 Jul 2024, 21:40, edited 1 time in total.

User avatar
idollar
i$

30 Jul 2024, 20:32

    Hi,

    The Leyden_Jar boards from JLCPCB have arrived. Customs was not easy this time in Germany but they eventually arrived home.

    I am typing this post with a FSSK (the very first v1.0 FSSK) upgraded to Leyden Jar controller !

    The installation was simple but for the following:
    • I had to compile a VIAL Firmware with the correct layout.
    • using the test tool from Rico, I could solve a couple of issues and ...
    • figure out the offset required for the threshold

      Code: Select all

      #define ACTIVATION_OFFSETS  {20,20}
      in

      Code: Select all

      keyboards/leyden_jar/fssk_idollar_v1r0/config.h
    • also, I had to isolate the keyboard PCB (capacitors) from the metal plate to ensure that there was not contact to ground.
    • finally, it seems that the large mounting hole on the left of the board, looking at it with the components on the top, is not connected to the ground. I had to use the right pad to create a good ground keyboards/leyden_jar/fssk_idollar_v1r0/config.hconnection.
    All in all, I now have one of my beloved FSSKs upgraded to a faster controller with plenty of memory for layers, tap-dance, macros etc....

    Thanks again RICO (@geekhack)

    LeydenJar:
    i$
    Last edited by idollar on 30 Jul 2024, 21:39, edited 1 time in total.

    User avatar
    idollar
    i$

    30 Jul 2024, 21:37

    The next steps with my endevour the Leyden Jar are:
    • Install the controllers in all my others Fs
    • Figure out how to use I2C to light some indicator LEDs under my main boards to show layer status
    i$

    Rico

    30 Jul 2024, 23:42

    Just had a bird eye view of this thread and I am impressed!

    This is a really cool project that you did, I didn't know this feat could be possible to do.

    Congrats !

    User avatar
    idollar
    i$

    21 Nov 2024, 10:43

    Hi,

    I post a spoiler of the posts which I plan in the next days once the work is completed to my satisfaction.

    You may know that I have replaced the xwhatsit controller in my FSSKs with the wonderful Leyden-Jar designed by Rico. I just use these keyboards to type.

    The RP2040 MCU used in the Leyden-Kar controller is much faster. It also has more storage space which allows to update the firmware as needed. I compiled Rico's firmware to include QMK & VIAL. (reference: https://github.com/mymakercorner/Leyden_Jar)

    Rico has exposed the i2c interface in his controller. This allows to solve the only issue that I found in the SSK: these keyboards miss the status LEDs. It is possible to use the i2c interface to add an OLED display, supported by QMK. The question was, how to integrate it ... the answer is 3d printing and Fusion360.

    In the attached you can find the first prototype which I completed last weekend.
    By mistake I purchased blue OLED displays which I do not like. They need to be white.
    Also, I plan to properly finish the 3d part and paint to a colour closer to the original SSK case.

    I will post the progress on this project. I just need to find the time to continue.

    Until then ... let me know your comments/suggestions.

    Cheers

    Note: forgive the quality of the pictures, I used the telephone.
    Note2: disregard the content of the LED in the picture. It was just a test using a library from a LadisPad which I have.


    i$
    Attachments
    OLED 3.jpeg
    OLED 3.jpeg (170.65 KiB) Viewed 586 times
    OLED 4.jpeg
    OLED 4.jpeg (108.88 KiB) Viewed 586 times
    OLED 2.jpeg
    OLED 2.jpeg (160.28 KiB) Viewed 586 times
    OLED 1.jpeg
    OLED 1.jpeg (197.16 KiB) Viewed 586 times
    OLED a.jpeg
    OLED a.jpeg (169.63 KiB) Viewed 586 times
    OLED b.jpeg
    OLED b.jpeg (196.53 KiB) Viewed 586 times

    User avatar
    idollar
    i$

    22 Nov 2024, 10:05

    Hi,

    Following some proper pictures on how the printout looks in white.
    I should finish and paint the parts.
    DSCF0298-small.jpg
    DSCF0298-small.jpg (1.42 MiB) Viewed 535 times
    DSCF0304-small.jpg
    DSCF0304-small.jpg (864.93 KiB) Viewed 535 times
    DSCF0303-small.jpg
    DSCF0303-small.jpg (839.45 KiB) Viewed 535 times
    DSCF0302-small.jpg
    DSCF0302-small.jpg (475.57 KiB) Viewed 535 times

    Cheers

    i$
    Last edited by idollar on 22 Nov 2024, 10:15, edited 2 times in total.

    User avatar
    idollar
    i$

    22 Nov 2024, 10:09

    In the case that anyone wants to upgrade to the Leyden-Jar their real fssk, and perhaps add the oled screen, send me a PM.
    We will find a way to send you the 3D files, instructions etc ...

    Post Reply

    Return to “Workshop”