/lnpos

Primary LanguageCMIT LicenseMIT

LNPoS

Free and open-source bitcoin point-of-sale

LNPoS includes:

  • LNPoS (for online LN payments, original project)
  • LNURLPoS (for offline LN payments, original project )
  • OnChain (for onchain payments)
  • LNURLATM (for making offline LN withdraw links).

Original demo

Video tutorial https://twitter.com/arcbtc/status/1585605023337168896

Join our telegram group MakerBits

Configuring

Go to settings to lanch USB config mode or wifi access point If using access opint the device SSID default password is "ToTheMoon1"

LNPoS – Online Lightning Network payments

Invoices are generated and checked from LNbits install.

Setting up

WiFi Access Point config

Launch portal and enter an LNbits endpoint (ie.legend.lnbits.com), invoice key, and a fiat currency to make things easier for product pricing.

LNURLPoS – Offline Lightning Network payments

A random pin generated on the device is encrypted and passed trough the payee. When the payment has been made the unencrypted pin is sent as a receipt. This function makes use of LNURL-pay protocol. Uses LNbits LNURLDevice extension.

Setting up

Launch portal and enter the string from the LNURLDevice extension on LNbits

OnChain – Generate fresh addresses using an xPub

Use an xPub to generate a fresh address for every payment. Useful for large purchases. Includes a mempool.space QR so the payment can be verified.

Setting up

Launch portal and enter BIP39 xPub and a pin, to make the function secure.

LNURLATM – Meatbag ATM, give refunds, accept cash for sats.

Create withdraw/faucet links. Uses more-or-les. This function makes use of LNURL-withdraw protocol. Uses LNbits LNURLDevice extension.

Setting up

Launch portal and enter the string from the LNURLDevice extension on LNbits



Purchasing:

  • The Lilygo Tdisplay is a cheap and small ESP32/screen development board.
  • You can either attach a keypad membrane or use the breakout board Lilygo specifically made for the LNURLPoS!
  • Any 3.7V lithium iron flat battery with 1.25mm JST connector should be fine. Go for at least 1000 mAh. If you want the battery to fit inside the breakout board, max. dimensions are 40x52x11mm. Example 1100 mAh 3.7V battery.

Software installation:

  • Install Arduino IDE 1.8.19

  • Install ESP32 boards, using boards manager

  • Role back ESP32 boards to 2.0.1 in boards manager image

  • Download this repo

  • Copy these libraries into your Arduino install "libraries" folder

  • Open this LNPoSTdisplay.ino file in the Arduino IDE

  • Select "TTGO-LoRa32-OLED-V1" from tools>board

  • Upload to device

Press/hold any button on the keypad during startup to launch portal. Default password is "ToTheMoon1" (without the quotes)

Note: If using MacOS, you will need the CP210x USB to UART Bridge VCP Drivers available here https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers If you are using MacOS Big Sur or an Mac with M1 chip, you might encounter the issue A fatal error occurred: Failed to write to target RAM (result was 0107), this is related to the chipsest used by TTGO, you can find the correct driver and more info in this GitHub issue