Giter VIP home page Giter VIP logo

kobowriter's Introduction

Kobowriter

This small project aims to let you use your old KOBO e-reader (mine is a GLO HD) as a simple, distraction free typewriter.

For years I thought that e-ink was the ultimate medium to write in broad daylight without eye strain or focus fatigue. It seems that others have had the same ideas, as we can see in the Freewrite or Pomera products.

This project brings the same form factor in a considerably cheaper way (especially if like me you already have a KOBO at hand).

Note that the installed software should let you use switch between your normal kobo stock software and the KoboWriter one; so your kobo is still usable in its default way.

Because XCSoar USB OTG should work for many KOBO devices (touch, Mini, Glo HD and pretty much all the later ones), this project would work there too. But as of now this program has only been built and tested for the KOBO GLO HD and only supports the AZERTY (French) keyboard. You can open issues if you need to support other devices / keyboards

How it looks

From face

From side

TODO add video

How it works

The kobo e-readers have a Micro-USB connector to charge and transfer files. With proper kernel modification this USB socket can be used as OTG, letting one plug in any kind of USB device.

Such kernel was compiled by the XCSoar project in order to turn the kobo into a fliying assistant supported by an external GPS.

We use their modifications to connect a USB keyboard to the OTG port.

However, the kobo giving no power through its USB socket, the keyboard has to be powered on its own - you can either use a cheap USB otg power cable like this one or modify the keyboard, like I did.

The software lets you use the keyboard to write and edit text files. It's coded in Go, compiled with a toolchain prepared for the KOBO devices, and relies largely on the excellent FBInk library to drive the screen, through its extremely useful port in Go, go-fbink.

How to build it

Note that we also provide ready made precompiled binaries for your KOBO

First you need to download and build the koxtoolchain on your development computer. This toolchain, once built, will let you build Go programs that can run on the KOBO.

TODO : Detailed step to build project

How to install

You can build the software, put it on a KOBO with XCSoar software, and launch it any way you see fit.

Or you can use our modified XCSoar installer that will get you the XCSoar program, kernel, and Kobowriter in just one step:

You do this at your own risk!

  • Download the KoboRoot.tar.gz from the release page
  • Connect your Kobo and place the archive in the .kobo (hidden) directory
  • eject safely, unplug, and let the Kobo update

From now on your Kobo will start up on XCSoar launcher. From there you can start the stock Kobo software, turn on USB-OTG or start the KoboWriter.

Note that when USB-OTG is enable, you won't be able to start the stock Kobo software. But you need to have it on in order to use the KoboWriter software. Changing the USB-OTG setting requires a restart.

  • When you start the KOBO, if not activated yet, from the XCSoar laucher tap on system and the enable USB-OTG and then restart the device.

If, like me, you use the KOBO only for KoboWriter, then your device should always boot in this state. In this case, only this last step is required:

  • From XCSoar launcher tap tools and then KoboWriter.

Plugin you powered USB keyboard and you should be good to go ;-)

kobowriter's People

Contributors

neuhaus avatar olup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kobowriter's Issues

Has anyone actually been able to get this to work?

Short of creating a development environment, I have tried this on several kobo devices and it either bricks the device or, more commonly, the Kobowriter just does not open.
So, copying the KoboRoot.tar.gz file to the kobo; bricked my aura (I knew the risk and am ok but sad), does not respond on my touch (several keyboards and power supplies and power on sequences), and I am waiting for a glow to arrive to try it.
This function is so useful that I started to look into learning the Go (Golang) programming language. I would rather be writing my novels than learning to code but the possibility of days worth of battery live in a distraction free environment is attractive.
A device that accepts text on an e-ink screen, saves the results, and allows extraction of those text files is selling for six times what a kobo is selling for. If this is possible with a kobo please tell me how to do it. I have a blank computer that I can add a developmental environment to, I just need to know how. Any help would be appreciated. Give me a fish or teach me to fish. I am all ears.
It is just sad now that I don't have a device to read on, now that my reader is bricked, and nothing to write on.

Port to Pocketbook

Can it work on a Pocketbook as well? It does have a MicroUSB port and Linux support.

This is a great project!

Hello,

I wanted to drop in to say I think this project is too good to go unnoticed and unloved.

I use a Qwerty keyboard and have a Kobo Libra 2 and Clara HD and the idea of being able to use one with my external keyboard is very exciting. I hope you are able to continue this project. With brands like Freewrite pricing their products so high, this workaround would be a fantastic option for people wanting to write in the sun on a smaller device.

Thanks for all your smart work.

Other keyboard layouts?

Hello, first I want to thank you for the Kobo writer. Im not a Very tech guy but I managed to install the rooted firmware and modify a USB keyboard. And the result is awsome: a modern typewriter with eink screen for distraction free writing... beautiful and elegant solution. Im ethousiastic so Im ready to learn how to use an azerty keyboard but... maybe there is a way to insert others layouts... Im currently writing in Italian. Let me now! Thank you very much.

Different Keyboard (QWERTY French Canadian Keybindings)

I have tried to build this unsuccessfully. I replaced the key.go with the following content.
Is there an easy way to build that. Step by step. I have tried the Makefile or directly the go build -o ./build/kobowriter command, but it fails all the time, due to errors.

Thanks for your help. Your thing is working nicely on Kobo touch 2.0. thanks !

//QWERTY French Canadian Keybindings created using phind.com ;-)

package event

var KeyCode = map[int]string{
	0: "KEY_RESERVED",
	1: "KEY_ESC",

	2: "1",
	3: "2",
	4: "3",
	5: "4",
	6: "5",
	7: "6",
	8: "7",
	9: "8",
	10: "9",
	11: "0",
	12: "-",
	13: "=",

	14: "KEY_BACKSPACE",
	15: "KEY_TAB",

	16: "q",
	17: "w",
	18: "e",
	19: "r",
	20: "t",
	21: "y",
	22: "u",
	23: "i",
	24: "o",
	25: "p",
	26: "[",
	27: "]",
	28: "KEY_ENTER",
	29: "KEY_L_CTRL",

	30: "a",
	31: "s",
	32: "d",
	33: "f",
	34: "g",
	35: "h",
	36: "j",
	37: "k",
	38: "l",
	39: ";",
	40: "'",

	41: "KEY_R_SHIFT",
	42: "\\",
	43: "z",
	44: "x",
	45: "c",
	46: "v",
	47: "b",
	48: "n",
	49: "m",
	50: ",",
	51: ".",
	52: "/",
	53: "KEY_R_CTRL",

	54: "KEY_KPASTERISK",
	55: "KEY_L_ALT",

	56: "KEY_SPACE",
	57: "KEY_CAPSLOCK",
	58: "KEY_F1",
	59: "KEY_F2",
	60: "KEY_F3",
	61: "KEY_F4",
	62: "KEY_F5",
	63: "KEY_F6",
	64: "KEY_F7",
	65: "KEY_F8",
	66: "KEY_F9",
	67: "KEY_F10",

	68: "KEY_NUM_LOCK",
	69: "KEY_SCROLL_LOCK",

	70: "KEY_F11",
	71: "KEY_F12",

	86: "KEY_PRINT_SCREEN",
	87: "KEY_PAUSE",
	88: "KEY_INSERT",
	89: "KEY_HOME",
	90: "KEY_PG_UP",
	91: "KEY_DEL",
	92: "KEY_END",
	93: "KEY_PG_DOWN",
	94: "KEY_RIGHT",
	95: "KEY_LEFT",
	96: "KEY_DOWN",
	97: "KEY_UP",

	100: "KEY_ALT_GR",

	103: "KEY_UP",
	105: "KEY_LEFT",
	106: "KEY_RIGHT",
	108: "KEY_DOWN",

	111: "KEY_DEL",

	183: "KEY_F13",
	184: "KEY_F14",
	185: "KEY_F15",
	186: "KEY_F16",
	187: "KEY_F17",
	188: "KEY_F18",
	189: "KEY_F19",
	190: "KEY_F20",
	191: "KEY_F21",
	192: "KEY_F22",
	193: "KEY_F23",
	194: "KEY_F24",
}

var KeyCodeMaj = map[int]string{
	2: "!",
	3: "@",
	4: "#",
	5: "$",
	6: "%",
	7: "^",
	8: "&",
	9: "*",
	10: "(",
	11: ")",
	12: "_",
	13: "+",

	16: "Q",
	17: "W",
	18: "E",
	19: "R",
	20: "T",
	21: "Y",
	22: "U",
	23: "I",
	24: "O",
	25: "P",
	26: "{",
	27: "}",


	30: "A",
	31: "S",
	32: "D",
	33: "F",
	34: "G",
	35: "H",
	36: "J",
	37: "K",
	38: "L",
	39: ":",
	40: "'",
	43: "|",
	44: "Z",
	45: "X",
	46: "C",
	47: "V",
	48: "B",
	49: "N",
	50: "?",
	51: ".",
	52: "/",
}

var KeyCodeAltGr = map[int]string{
	3: "~",
	4: "$",
	5: "ù",
	6: "µ",
	7: "•",
	8: "§",
	9: "ç",
	10: "à",
	11: "°",
	12: "+",
	13: "=",

	16: "æ",
	17: "œ",
	18: "€",
	19: "£",
	20: "®",
	21: "©",
	22: "°",
	23: "²",
	24: "³",
	25: "¹",
	26: "½",
	27: "¬",

	30: "@",
	31: "ß",
	32: "¿",
	33: "÷",
	34: "¡",
	35: "»",

	37: "|",
	38: "«",
	39: "≠",

	41: "`",

	43: "|",
	44: "}",
	45: "|",
	46: "€",
	47: "“",
	48: "‘",
	49: "…",
	50: "·",
	51: "–",
	52: "—",
}

problem building kobowriter

Dear @olup,

I finally put my hand on a machine where I was able to install Linux.

I have successfully built the KOReader Cross Compile ToolChains , by running the gen-tc.sh file, which took more than 2 hours:

[INFO ]  Build completed at 20240118.201720
[INFO ]  (elapsed: 131:19.72)
[INFO ]  Finishing installation (may take a few seconds)...
[131:21] / 
[INFO ]  =================================================================
[INFO ]  Build done. Please add /home/user/x-tools/arm-kobo-linux-gnueabihf/bin to your PATH.
[INFO ]  =================================================================
~/Downloads/kobowriter-main/build ~/Downloads/kobowriter-main
~/Downloads/kobowriter-main
[INFO ]  =================================================================
[INFO ]  The x-compile.sh script can do that (and more) for you:
[INFO ]  * If you need a persistent custom sysroot (e.g., if you intend to build a full dependency chain)
[INFO ]    > source /home/user/Downloads/kobowriter-main/refs/x-compile.sh kobo env
[INFO ]  * If you just need a compiler:
[INFO ]    > source /home/user/Downloads/kobowriter-main/refs/x-compile.sh kobo env bare

I have run the:

source /home/user/Downloads/kobowriter-main/refs/x-compile.sh kobo env bare
* Setting environment up . . .

* Environment has been set up for the KOBO TC, enjoy :)
* Not using our custom sysroot! :)

to set up the environment.

After installing golang-go via apt, when I run the make file, I have the following error:

make
CGO_ENABLED=1 GOARCH=arm GOOS=linux CC=arm-kobo-linux-gnueabihf-gcc CXX=arm-kobo-linux-gnueabihf-g++ go build -o ./build/kobowriter
go: downloading github.com/MarinX/keylogger v0.0.0-20210528193429-a54d7834cc1a
go: downloading github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef
go: downloading github.com/fogleman/gg v1.3.0
go: downloading github.com/shermp/go-fbink-v2 v1.20.2
go: downloading github.com/matoous/go-nanoid/v2 v2.0.0
go: downloading github.com/matoous/go-nanoid v1.5.0
go: downloading github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
go: downloading github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
go: downloading golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d
# github.com/olup/kobowriter/screener
screener/screen.go:90:9: too many arguments in call to fb.ClearScreen
	have (*gofbink.FBInkConfig, *gofbink.FBInkRect)
	want (*gofbink.FBInkConfig)
screener/screen.go:125:25: not enough arguments in call to fb.Refresh
	have (number, number, number, number, *gofbink.FBInkConfig)
	want (uint32, uint32, uint32, uint32, gofbink.HWDither, *gofbink.FBInkConfig)
screener/screen.go:161:43: too many arguments in call to s.fb.ClearScreen
	have (*gofbink.FBInkConfig, *gofbink.FBInkRect)
	want (*gofbink.FBInkConfig)
screener/screen.go:166:59: too many arguments in call to s.fb.ClearScreen
	have (*gofbink.FBInkConfig, *gofbink.FBInkRect)
	want (*gofbink.FBInkConfig)
make: *** [Makefile:3: build] Error 2

I can try to correct these small errors in the code, but I am wondering if I am not doing something else wrong.

Thank you.

perixx Keyboard compatibility

Hello

I use perixx PERIBOARD-409 with kobowriter and keyboard is not detected.
Kobowriter start correctly with logitech k120.

Is this issue a driver issue?
Is there a way to fix that?

Chouette ! But I don't really understand how to do this properly

Hey there !

I don't know how to contact you. I'm very interested in your program cause Freewrite and Pomera is awfully expensive. The only issue is that I don't really understand the HOW to do this, and especially the first step : "First you need to download and build the koxtoolchain on your development computer. This toolchain, once built, will let you build Go programs that can run on the KOBO."
Secondly, the keyboard need to be connected to the Kobo and to a battery ?
And, lastly, when you writed something, your text file, where does it go ? In the Kobo's memory ?

thank you.

Any feeback on different model types?

Hi!
First thank you for your work. It seems interesting, especially that you found a way to do that whereas the brand itself has not been able to release such extension yet!
Now that this code is out for 2 years, do you (or does anybody) have any feedback on models on which it already worked or not ?

Thanks,
Vic

Please add demo video

The README has a placeholder for a demo video. It would be great to see how this thing performs before buying the parts.

Did you change the XCSoar 7.11 Code ?

Hello,
was it nessecary to change something in the Coe of the XCSoar build/Kernel. Or did you took it as it was and added your
Typewriter programm?

Best Regards
Christoph

It works too on kindle ?

Hi I like so much your project but I've a Kindle 8th gen (base model). Do you think that your guide/sw works on ? I've seen that the koxtoolchain supports kindle devices. Have you some ideas about ?

Thank you in advance

Keyboard not detected

I'm unable to get tke Kobo (Glo) to recognize the usb keyboard. I've got a splitter powered by the mains adapter (also tried with a powerbank), and a bunch of regular, functioning usb keyboards.

The keyboard lights up if I plug the splitter in the kobo last, but I can't get Kobowriter to start.

Any idea?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.