adds to cart
Upon receiving the PCB I realized it
]]>adds to cart
Upon receiving the PCB I realized it supported SMD mount resistors and LED underglow. Some nice touches for what amounts to a meme board.
This vendor also sells acrylic cases for the keyboard but I have access to a laser cutter and the internet - no need to spend any more money. I found someone elses completed layout online and recreated that in the KLE.
I created a (test) plate using keeb.io's plate generator, which is a great community tool. All you have to do is feed the generator the raw output from the KLE and it spits back the correct switch and stabilizer cutouts.
Looks great except for that missing space key. Maybe it'll render in QCAD? Nope. Maybe I'll catch the error before cutting the acrylic? Nope. Mistakes were made.
This is the part of the build where things start to go off the rails a bit.
Next iteration's notes:
Decide to try to get swillkb working again:
Everything seems good (enough) at this point, time to get building.
json2c
cmd line toolSo... for all that work... I tried actually using this cursed layout and realized it's never, ever going to happen.
]]>Thankfully, optical drives are a thing of the past. Old mediums have a tendency to make a comeback but hopefully CD/DVD's go the way of zip disks, laser disks, and floppies. Never to be seen or heard from again.
Long story short:
]]>Thankfully, optical drives are a thing of the past. Old mediums have a tendency to make a comeback but hopefully CD/DVD's go the way of zip disks, laser disks, and floppies. Never to be seen or heard from again.
Long story short: I have a DVD, I want to make a digital copy and watch it on my computer. I dust off my trusty optical drive, plug it in, insert the disk, and crack open Handbrake. It scans the disk and only finds the previews because of the copyright protection. I release a belabored heavy sigh and look for the tool to bypass this. VideoLAN has released a tool called libdvdcss
and it's just what we want.
Step 1: Install libdvdcss
. I'm going to use brew
, a 3rd party package manager for macOS. Open terminal and paste brew install libdvdcss
. Let it do it's thing.
Step 2: Close and reopen Handbrake. Find the actual full length video available to rip.
That's it. 👍
]]>Something this cute should be illegal. I saw this on https://keyhive.xyz and picked up one up.
First thing I did was place the switches into the case.
Next I placed the
]]>Something this cute should be illegal. I saw this on https://keyhive.xyz and picked up one up.
First thing I did was place the switches into the case.
Next I placed the dampening foam into the case. The foam seems like practical joke for this little guy... but in it goes.
I took the PCB headers and placed them into a breadboard to help make soldering them easier.
Next step was to place the PCB into the case and solder the switches in. If you're building one, check the silkscreen locations to make sure everything is correct.
At this point I flashed the Pro Micro using QMK Toolbox and made sure it was working. An easy way to verify a successful flash is to look at Device Manager/System Report to see if there is a connected device named 2% Milk.
I placed the Pro Micro in and then soldered it. Orientation matters. If it's soldered in upsidedown - there is no firmware fix or some magic that can make it work. You'll have to desolder, flip it, and resolder. Be careful while soldering, it's easy to burn the 3D printed case with the soldering iron. Ask me how I know this.
That's it. All done.
After completing the build, I noticed the VCC|RGB|GND connections on the PCB. Shit. I could've put an RGB LED in but missed my chance. So I did what any normal, sane person would do. I found the gerber files, sent them to OSH Park, and got more PCB's made. It was expensive and one thing I would do differently would be to use JLCPCB instead of OSH Park to save money.
This second one was a good learning tool for how to add RGB to a board and how to tell QMK how many LEDs a board has. QMK has excellent documentation 🙏.
]]>The BDN9 is a macro pad produced by Keebio. It supports four layouts: 3x3 grid, single rotary encoder in the top left or top right, or dual rotary encoders.
I followed the guide at keeb.io.
]]>The BDN9 is a macro pad produced by Keebio. It supports four layouts: 3x3 grid, single rotary encoder in the top left or top right, or dual rotary encoders.
I followed the guide at keeb.io.
Started by soldering all the resistors.
next for the MOSFET and the reset button
After those, I soldered the pro micro headers into place. The holes are slightly... staggered...? I thought the board was defective but that's just the design. I think it's supposed to allow for the pro micro to be pressure fitted. After the headers were in, I soldered the rotary encoder in place.
Pressure fitting the switches into the top plate
Everything fit well and looked nice. Let's bake this cake.
I was following the keebio instructions and part of them was to place some type of nonconductive barrier between the PCB and the pro micro. While building this I almost didn't do this because it looked liked it would be fine. But I followed the instructions anyways.
I plopped the pro micro in and melted it. It was a super tight fit. I had to clip the headers with flush cutters to get the base to sit properly. I'm glad I followed the instructions instead of improvising.
The main of attractions of this board were the rotary encoders and that there was VIA compatible firmware available. I downloaded the v1 firmware from the VIA website and used QMK Toolbox to flash the pro micro. Did the obligatory clicks and clacks of success and made sure all the switches were passing input.
The stock firmware had a surprisng setting for the right rotary encoder. Twisting left or right triggered the page up/down key codes. Pressing down toggled the mute state. I cloned the QMK firmware repo and found the folder for the VIA firmware for the board. I copied and renamed it. I modified the keymap.c
to make twisting the knob raise or lower the volume. Then I complied the firmware with the changes and reflashed the board.
Since the rotary encoder doesn't lock into the switch plate, it dipped a little when I depressed it. I used a hot glue gun and placed a line against the switch plate and the PCB. It's working OK and fixed the issue, but hot glue isn't insulated so... shrug?
]]>The first thing I did after receiving the board was plug it in, connect the TRRS cable, and flash the VIA version of QMK onto the board. It works, the LEDs work, and after testing each switch socket with tweezers, they work. Time for the fun stuff.
The first thing I did after receiving the board was plug it in, connect the TRRS cable, and flash the VIA version of QMK onto the board. It works, the LEDs work, and after testing each switch socket with tweezers, they work. Time for the fun stuff.
I gathered all the materials I would need to complete the board. Stabs, switches, rotary encoders, PCB's, soldering tools, etc.
I then popped the stabs into the board and put in the rotary encoders. I tacked a single pin on the rotary encoders, made sure it was nice and straight, then soldered the rest of the pins.
The board supports many different layout configurations, as show in the image below.
Instead of YOLOing the build, I decided the do a test fit before I soldered any switches. I knew I wanted both the macro pads and the rotary encoders, so that removed a couple of layout options. I really recommend picking and testing your layout prior to soldering.
Now that I've picked a layout, its time to melt everything together. Due to the wide variety of layouts available, some of the plated holes in the board don't form a complete circle. This doesn't cause any problems but wasn't something I had seen before.
After everything had been soldered, I connected the board back to my computer and tested all the keys. Everything worked great! I used the included stand offs to create the case/frame and used rubber feet on the bottom of the board to stop it from sliding.
I'm really happy with the finished product. It's a solid keyboard and it's helping me get my touch typing back to Mavis Beacon levels. I didn't think I'd want LED's under the keys but after typing in the dark a bit, I changed my mind. I bought some 3mm flat top warm white LEDs. I haven't installed them yet - I think keeb.io will be releasing an acrylic case soon. If the case requires any desoldering, I'd rather only do it once (see updates below). If I have to desolder all the switches, I would replace the current stabs with screw in stabilizers that have been lubed and clipped. I also have been using gaff tape for the infamous band aid mod
. I think it dampens the sound better and is less pingy. Also easier to add/adjust prior to placing the stab.
VIA is a great tool for someone like me. It has an easy to use GUI and on the fly macro creations. At of the time of writing, VIA does not support modifying the rotation motion (jogging left or right) on the encoders. It can only modify what happens when the encoder is pressed in. I read the QMK documentation and modifed the via
keymap to have the top left encoder toggle screen brightness and the top right encoder toggle volume up/down. Depressing the left encoder puts the machine to sleep and drepressing the right encoder mutes the volume. If you're new to modifying firmwares, there's nothing to be scared of. It's just a text file. I would recommend looking through the firmware for the board and seeing how to default options are set. From there, you can use QMK's key codes to add/replace what you want.I thought these would be a novelty to use, but I've found that I've come to rely on them frequently and find myself missing the encoders on boards without them.
After using the board for a while I decided to swap in new stabs and add backlighting. While I managed to unsolder everything to add new stabs, I really f'd the boards up and wound by buying a new set of PCB's. Don't let $20 worth of parts ruin your keeb life. Buy good, screw in stabs and lube them before building your board. Here's some keyboard gore from the attempted fix:
After getting the new PCB's, I soldered everything back together. I passed on the backlighting this time... it just didn't do too much for me. I had my cousin print some midlayers (from keebio's Github) so the board would have an evenly distributed glow. Thing is - once the midlayers were added, the glow wasn't as bright as it had been before. I was in too deep at this point to stop, so I bought some flexible mirrored material with a sticky back off Amazon. I then cut it to fit and stuck it in. The glow was way brighter - problem solved.
Since I was past the point of no return, as mentioned above - I wound up upgrading from my original cheapo Amazon keyset to a DSA profile set from PMK. PMK also sells single keys, so I was able to get spacebars in the perfect sizes. After seeing that the keyset didn't match with the encoder knobs, I bought nice, knurled encoder knobs to match. At this point, it would have been more cost effective and less frutration to just burn a pile money.
I had a lot of fun though and learned a tonne about hardware, software, and troubleshooting. The keyboard is a beautiful tool that I made myself and will last for a long time. Unless I decide to desolder it again.
]]>I decided to purchase the JNAO (Just Need An Ortho) board from keeb.io and do a custom keyboard build from the PCB up. It comes as a 5x12 layout with a break off bottom row to convert it to a 4x12 layout. I decided to use the 4x12
]]>I decided to purchase the JNAO (Just Need An Ortho) board from keeb.io and do a custom keyboard build from the PCB up. It comes as a 5x12 layout with a break off bottom row to convert it to a 4x12 layout. I decided to use the 4x12 layout.
The bottom row broke off easily. I gently applied pressure down on that row while lifting the top of board towards me. I used a Dremel to sand off the rough edges left from the break.
Since the board has two possible layouts, it has two seperate sets of key labels. I used a black permenant marker to cover the labels for the 5x12 layout.
The PCB comes without firmware loaded. No problem, it's QMK compatible and QMK has an online layout creator and easy tools for firmware flashing. Easy peasy. Let's load the 4x12 firmware.... wait... what the hell?
For some reason, the online configurator isn't pulling the default_4x12
layout. Ugh-fine-whatever. I should submit a pull request to fix this. I need to fix it for me first though. Checking out the QMK Firmware documentation, I followed the steps for setting up my build environment. Everything installed as expected.
Let's run qmk setup
...
Goddamit. I think this is an issue with where brew
links the bin and where the qmk
software goes to check it. Whatever - I just need it to work once, gonna ignore this for now.
Using the QMK documentation example, I built this command to compile the firmware I want: qmk compile -kb jnao -km default_4x12
Creating load file for flashing: .build/jnao_default_4x12.hex [OK]
Copying jnao_default_4x12.hex to qmk_firmware folder [OK]
Checking file size of jnao_default_4x12.hex [OK]
* The firmware size is fine - 20788/28672 (72%, 7884 bytes free)
This is what I was looking for - a .hex
output file to flash to the board.
Using QMK Toolbox, I selected the newly created .hex
file and loaded it up. I select JNAO
as my keyboard. Hit flash and everthing looks good.
After a typing test, I have the expected default key layout and things seem to be working okay. Just one problem now... I dislike the default layout. Like really dislike it. I want a clone of the Planck layout. I didn't consider that before doing all this work. Back to the drawing board.
I reeeeally don't want to recreate the entire Planck layout by hand for the JNAO board in the QMK Configurator. I have a hunch that I can download the keymap.json
file for the Planck, open it up in Sublime Text and change a few lines to create a JNAO keymap.json
.
Here we go:
"keyboard":"planck/rev1","keymap":"planck_rev1_layout_ortho_4x12_mine","layout":"LAYOUT_ortho_4x12","
I modified that part of the keymap.json
with the desired values and saved it as a new file.
"keyboard":"jnao","keymap":"siegel_jnao_layout_ortho_4x12_mine","layout":"LAYOUT_ortho_4x12"
After uploading this modified keymap.json to the QMK Configurator site, it loaded all the layers correctly and populated the correct board. Perfect. Compile
and then Download Firmware
. I used that new .hex file and reflashed the board. Success!✨
You can grab the compiled default firmware and compiled Planck layout firmware off my GitHub: https://github.com/dayofdoom/jnao_default_4x12_firmware
Let's do a sanity test on the newly flashed firmware and make sure the board is doing what it's supposed to do. An easy way to do this is load up the QMK Keyboard Test or the VIA software and then trigger the key using some tweezers.
The key presses registered exactly as they were mapped in the firmware. Perfect.
Next I inserted the switches into the top plate and did a test fit with the PCB. The plate and case were 3D printed by my cousin from the lo-pro-bottom.stl
and lo-pro-plate-mx-2x2u.stl
files in the OLKB GitHub. They came out excellent and give the board a solid foundation with some slight flex. The board is very light too - it feels about the same weight as my cellphone.
In the home stretch here - time to solder the switches to the PCB. I used my Weller WES51 and set the temperature to 600°F. I did each corner of the board first and made sure everthing looked even and level. Then I worked my way through the rest of the switches, pressing down firmly frequently to make sure the switches were completely seated.
After completing the soldering, I opened up VIA and tested all the keys again. I'd rather find a bad solder joint now then after I stick all the keycaps on. Every key was working correctly.🔥🔥🔥.
The board types nice and smooth. It's audibly pleasing to me. Last touch is to get some rubber feet and stick 'em to the bottom to reduce slide while typing. This was a really fun project. Having this board come together from all the seperate parts was rewarding. 💃
]]>Run this command to have the switch show you its management interface address:
show lldp info local-device
]]>Run this command to have the switch show you its management interface address:
show lldp info local-device
]]>The direct link to app store is here: https://itunes.apple.com/us/app/macos-mojave/id1398502828?ls=1&mt=12
The official Apple article is here: https://support.apple.com/en-us/HT210190
]]>The direct link to app store is here: https://itunes.apple.com/us/app/macos-mojave/id1398502828?ls=1&mt=12
The official Apple article is here: https://support.apple.com/en-us/HT210190
]]>Your clients will not get this change immediately, I
]]>Your clients will not get this change immediately, I had to release/renew the DHCP lease to recieve the updated DNS server settings.
]]>sudo mount -t cifs //192.168.1.123/Multimedia/Movies /mnt/Movies -o user=xxxxx,pass=xxxxx,cache=loose,noperm,dir_mode=0777,file_mode=0777
You'll want to replace the example IP and share path (//192.168.1.123/Multimedia/Movies
) with the actual IP and share path of your NAS. Pop in your username and password (replace the xxxxx
's).
If you want to get fancy, you can create a script instead of having to Google this each time or search through your previous commands. It would look something like this:
Save the file as mount.sh
and run sudo chmod 775 mount.sh
to change the permissions so you can run it. Then run .\mount.sh
. The drive should be mounted and be browsable. 👍
Terminal.app
and paste sudo killall -HUP mDNSResponder
.]]>Terminal.app
and paste sudo killall -HUP mDNSResponder
.]]>Please use the link below to download a copy of the software I received with my scanner. I can confirm it works 100% with the Pakon F-135.
Download the firmware here: https://www.amazon.com/clouddrive/share/ydeHLORP743ueHyfIfzsqFAwhsrZpTdLRly0ZIYzcIP
Edit - 8/27/2019 - There is a nice GitHub repository by plonsker with this software and a bunch of other goodies for more advanced computery people. I saw this after I posted and wanted to list it as a resource.
]]>Add LDAP Directory in Okta. Go to Directory > Directory Integrations. Select Add Directory > Add LDAP Directory. Make sure to set the LDAP Interface to Active.
]]>Add LDAP Directory in Okta. Go to Directory > Directory Integrations. Select Add Directory > Add LDAP Directory. Make sure to set the LDAP Interface to Active.
Log into Jamf. Go to System Settings > LDAP Servers. Create a new LDAP server. Select Configure Manually when asked to choose a directory service.
Model your User Mappings to these settings.
Attribute | Mapping |
---|---|
USER ID | uid |
USERNAME | uid |
REAL NAME | cn |
EMAIL ADDRESS | uid |
APPEND TO EMAIL RESULTS | Optional, refer to Jamf documentation |
DEPARTMENT | department |
PHONE | phone |
POSITION | title |
USER UUID | objectGUID |
Attribute | Mapping |
---|---|
OBJECT CLASS(ES) | groupofUniqueNames |
SEARCH BASE | dc=yourcompany, dc=okta,dc=com |
GROUP ID | uniqueIdentifier |
GROUP NAME | cn |
GROUP UUID | objectGUID |
Attribute | Mapping |
---|---|
MEMBER USER MAPPING | UniqueMember |
That's all. Try looking up a few users in Jamf to make sure the integration is working correctly.
]]>Heatsink placement, from left to right: Processor, RAM, and Gigabit Ethernet.
]]>Heatsink placement, from left to right: Processor, RAM, and Gigabit Ethernet.
]]>The official Kali Linux VM comes with ssh
disabled. I like to have ssh
available so I can run commands from Terminal on my host to the VM. I only enable ssh
in testing environments. Follow the steps to enable ssh
.
apt-get install ssh
systemctl enable ssh
service ssh start
]]>The official Kali Linux VM comes with ssh
disabled. I like to have ssh
available so I can run commands from Terminal on my host to the VM. I only enable ssh
in testing environments. Follow the steps to enable ssh
.
apt-get install ssh
systemctl enable ssh
service ssh start
Now we need to edit the config file to allow root logins. I use vim
, if you're new replace vim
with nano
in the command below to make editing easier.
vim /etc/ssh/sshd_config
Change the following line from
#PermitRootLogin prohibit-password
to
PermitRootLogin yes
Make sure you remove the #
or else it won't work.
service ssh restart
After restarting the service, the root user can successfully ssh
in.