# Documentation about using 3rd party plugins

**URL:** <https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595>\
**Category:** Plugins\
**Created:** [February 25, 2019, 9:27am UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595 "2019-02-25T09:27:19Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![noseglasses](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/noseglasses/32/429_2.png) [@noseglasses](https://community.keyboard.io/u/noseglasses)\
**Post date:** [February 25, 2019, 9:27am UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/1 "2019-02-25T09:27:20Z")

</div>

I had a hard time finding documentation about where to put 3rd party plugins when building the firmware. I searched the READMEs and the Kaleidoscope Wiki but I could not find any information.

Of course I am pretty sure that most of the users are able to figure this out by means of trial and error. If there already exists any documentation that I was not able to find, it would definitely be worth being added in some prominent place in the Kaleidoscope-Wiki (if no already there 😉)

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 1:17pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/2 "2019-02-25T13:17:59Z")

</div>

I’ve found that the best place to add them is under the sketch directory. For example:

```bash
$ git clone https://github.com/keyboardio/Model01-Firmware.git my-model01-firmware

$ cd my-model01-firmware

$ git clone <third-party-plugin>

```

_Edit Model01-Firmware.ino_

```bash
$ make flash

```

I haven’t checked to see if this works with the new build system yet, but it works well with `kaleidoscope-builder`.

---

<div class="post-metadata">

**Author:** ![noseglasses](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/noseglasses/32/429_2.png) [@noseglasses](https://community.keyboard.io/u/noseglasses)\
**Post date:** [February 25, 2019, 2:21pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/3 "2019-02-25T14:21:52Z")

</div>

With this setup, do you have a symbolic link to the bundle hardware path in your Arduino installation? Or do you clone Model01-Firmware.git into the bundle’s library directory?

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 3:49pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/4 "2019-02-25T15:49:02Z")

</div>

It should work with the sketch directory anywhere in the filesystem, as long as the symlink to the Kaleidoscope libraries is correct. In practice, I’ve almost always been using the Model01-Firmware directory inside the bundle.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 4:08pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/5 "2019-02-25T16:08:18Z")

</div>

Interesting. Building a sketch outside of the bundle tree seems not to work because of an incorrect path to `rules.mk`. Apparently, I haven’t done that in a while.

---

<div class="post-metadata">

**Author:** ![noseglasses](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/noseglasses/32/429_2.png) [@noseglasses](https://community.keyboard.io/u/noseglasses)\
**Post date:** [February 25, 2019, 4:11pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/6 "2019-02-25T16:11:44Z")

</div>

> [@merlin](#):
>
> Building a sketch outside of the bundle tree seems not to work because of an incorrect path to `rules.mk` .

Because you mention rules.mk. Could the following issue be related. There was also problem with `rules.mk`’s path. Jesse recently pushed a quick fix.

> <https://github.com/keyboardio/Kaleidoscope/issues/584>
>
> Building the stock firmware on Windows with MSYS used to work a while (ten month…s) ago and now appears to be broken. The last successful build attempt was with Kaleidoscope 39601fcba2d7b9bdf0a98aafd26aa88505ef9330 as part of Arduino-Boards.git (unfortunately I do not have the SHA of the bundle).
> 
> I am running a MSYS-driven build with appveyor to ensure that the firmware binary that is build with my custom build system \[Leidokos-CMake\](https://github.com/CapeLeidokos/Leidokos-CMake) remains binary compatible with the binary generated by kaleidoscope-builder.
> 
> A build log of an old successfull build is here: https://ci.appveyor.com/project/CapeLeidokos/leidokos-cmake/builds/15594966
> 
> A current build output can be found here: https://ci.appveyor.com/project/CapeLeidokos/leidokos-cmake
> 
> The following lines caused by \`avr/libraries/Model01-Firmware/Makefile\` are especially strange
> \`\`\`
> Makefile:55: C:/projects/leidokos-cmake/hardware/keyboardio/avr/build-tools/makefiles//rules.mk: Not a directory
> make\[4\]: \*\*\* No rule to make target 'C:/projects/leidokos-cmake/hardware/keyboardio/avr/build-tools/makefiles//rules.mk'. Stop.
> \`\`\`
> In line 55 there is only the include directive that includes the rules.mk file.
> 
> Any ideas?

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 4:13pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/7 "2019-02-25T16:13:24Z")

</div>

My link needs to change so it’s up one level, because `build-tools` is a sibling of `avr`, not a child, but in the bundle, `avr/build-tools` is a symlink pointing to `../build-tools`.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 4:15pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/8 "2019-02-25T16:15:31Z")

</div>

You are correct! That fix is what broke building the sketch outside the bundle.

---

<div class="post-metadata">

**Author:** ![noseglasses](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/noseglasses/32/429_2.png) [@noseglasses](https://community.keyboard.io/u/noseglasses)\
**Post date:** [February 25, 2019, 4:16pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/9 "2019-02-25T16:16:50Z")

</div>

🤔 Can the fix be fixed?

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [February 25, 2019, 4:18pm UTC](https://community.keyboard.io/t/documentation-about-using-3rd-party-plugins/2595/10 "2019-02-25T16:18:56Z")

</div>

I think if I change the level at which my symlink works, it will be fine.

[edit: i.e. link from `~/Arduino/hardware/keyboardio` instead of from `~/Arduino/hardware/keyboardio/avr`]
