Skip to the content
PCBKitNew board
2 layers52.1 × 50.8 mmInterceptor, the printed circuit board in 3D

I wanted to intercept the communication between my Flexispot standing desk buttons. This is the progress on the project

Size
52.1 × 50.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
5
Nets
16
Pads
56
Tracks, vias
50, 16
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
28 Mar 2020
Updated
8 Feb 2021

Overview

Interceptor is an open-source printed circuit board by nv1t, from the nv1t/standing-desk-interceptor repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 52.1 × 50.8 mm with 5 parts on 16 nets, routed with 50 tracks and 16 vias.

It is built around the RJ45.

Main components

1

README

README.md

standing-desk-interceptor

I wanted to intercept the communication between my Flexispot E5B standing desk buttons. This is the progress on the project. It should work on any other flexispot desk as well, as i suspect they use the same button interface with nearly the same protocol. But this needs testing!

RJ45 Pins

PINColourName
1brownRES
2whiteSWIM
3purple?
4redWAKE
5greenRX/TX (cp/mc)
6blackTX/RX (cp/mc)
7blueGND
8yellowVCC

Using SWIM

The SWIM Debug interface is on the RJ45 Port, but not possible to use, due to set Read Protection, which can only be disabled by overwriting the Chip itself.

Protocol

Every Command starts with 0x9b and ends with 0x9d. The second byte is the length of the Message with the Endbyte included. It seems like the Byte after the length is some kind of messagetype, because it stays constant for button presses, height configuration and different messages.

Start ByteLengthTypePayloadChecksumEnd Byte
9b060200 006c a19d
9b071206 06 7d38 b79d
9b04117c c39d
9b0413bd 429d
9b0415bf c29d

The checksum is a CRC16 Modbus Checksum (07 12 06 06 7d results in 0x38b7) over the Length+Type+Payload

Button presses

A button press has the message type 0x02 and can be used as a fixed command. The checksum is steady and doesn't have to be recalculated.

Those are the known commands from the button controller to the motor controller with their respective button names.

Start ByteLengthTypePayloadChecksumEnd ByteName
9b060201 00FC A09dUP
9b060202 000C A09dDOWN
9b060204 00AC A39dM1
9b060208 00AC A69dM2
9b060210 00AC AC9dM3
9b060220 00AC B89dM

Height

(Credit goes to mikrocontroller forum https://www.mikrocontroller.net/topic/493524)

The height has the MessageType 0x12 and the payload is a simple 7 Segment display output.

As an example we look at the height answer: 9b 07 12 06 06 7d 38 b7 9d which represents 116

P1P2P3
06067d

If we convert this to a regular 7 Segment Display:

aaa
fb
fb
fb
ggg
ec
ec
ec
ddddp

Converting each byte to is binary representation and mapping each bit to a segment, we can generate the following table:

Nameabcdefgdp
P101100000
P201100000
P310111110

Mapping this to the example above we can display the number 116 as a 7-Segment output. (don't want to include pictures, just believe me or try it out)

Unkown MessageTypes

We don't know about the MessageTypes 0x11, 0x13, 0x15. They are send by the motorcontroller. They seem to be constant across different tables and don't bear any payload.

Parts

5
QtyValueFootprintReferences
2Conn_01x08_MaleConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalA, B
2RJ45Custom-Connectors:MEBP_8-8GA, B
1SW_DIP_x08Button_Switch_THT:SW_DIP_SPSTx08_Slide_6.7x21.88mm_W7.62mm_P2.54mm_LowProfileSW1

Questions

How big is the Interceptor PCB?

It measures 52.1 × 50.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Interceptor use?

5 parts, built around the RJ45. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Interceptor KiCad files?

From the nv1t/standing-desk-interceptor repository on GitHub, at the commit this page was made from: the board is hardware/interceptor/interceptor.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Interceptor design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from nv1t/standing-desk-interceptor

1
  • 2 layers67.9 × 47.8 mmPlatine, the printed circuit board in 3D

    Platine

    nv1t/standing-desk-interceptor

    I wanted to intercept the communication between my Flexispot standing desk buttons. This is the progress on the project

    11 parts52CC0-1.0

Similar boards

  • 2 layers33.7 × 97.8 mmHAN ESP TSS721, the printed circuit board in 3D

    HAN ESP TSS721

    UtilitechAS/amsreader-firmware

    ESP8266 and ESP32 compatible firmware to read, interpret and publish data to MQTT from smart electrical meters, both DLMS and DSMR is supported

    29 parts470
  • 4 layers84 × 82 mmToad, the printed circuit board in 3D

    Toad

    travisgoodspeed/goodfet

    An embedded bus adapter for various microcontrollers and radios.

    241 parts333
  • 2 layers100 × 100 mmCANBuster, the printed circuit board in 3D

    CANBuster

    GBert/misc

    miscellaneous stuff / unsorted

    182 parts99
  • 2 layers50 × 55.4 mmCasserole, the printed circuit board in 3D

    Casserole

    puddly/casserole

    Control GE appliances

    23 parts94Apache-2.0
  • 4 layers90 × 75 mmCM4 2 Backup, the printed circuit board in 3D

    CM4 2 Backup

    olvint/CM4-NAS-MiniPCIE

    Raspberry Pi CM4 based NAS solution board

    21 parts51
  • 4 layers73.9 × 84.5 mmAei, the printed circuit board in 3D

    Aei

    Severson-Group/AMDC-Hardware

    Circuit board designs for controlling advanced motor systems

    54 parts51
  • 2 layers99 × 60 mmPwr, the printed circuit board in 3D

    Pwr

    mfkiwl/KiwiSDR_PCB

    KiCAD PCB files for KiwiSDR project including active antenna and bias tee

    64 parts46
  • 2 layers70 × 50 mmS88iso, the printed circuit board in 3D

    S88iso

    GBert/railroad

    git clone https://github.com/arendst/Tasmota.git cd Tasmota git tag pio run

    33 parts36