# How can i use libuavcan

**URL:** <https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912>\
**Category:** LibCyphal\
**Created:** [August 12, 2020, 7:01am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912 "2020-08-12T07:01:36Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![newcomer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/n/e5b9ba/32.png) [@newcomer](https://forum.opencyphal.org/u/newcomer)\
**Post date:** [August 12, 2020, 7:01am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/1 "2020-08-12T07:01:36Z")

</div>

- Can you provide me with a route or a simple example?  
I had read the uavcan guide,UAVCAN\_Specification\_v1.0-alpha,but i still do not how to use it .  
the pyuavcan seems difficult to me.

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 12, 2020, 4:03pm UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/2 "2020-08-12T16:03:59Z")

</div>

Libuavcan is still not ready, sorry. You can do either:

- Use PyUAVCAN, assuming that you’re not dealing with a deeply embedded system. You said that you find it difficult, but we’re willing to help on the forum if you have any questions.

- Use Libcanard. This implementation supports only UAVCAN/CAN; if you’re interested in UDP or other transports, it will not work.

---

<div class="post-metadata">

**Author:** ![newcomer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/n/e5b9ba/32.png) [@newcomer](https://forum.opencyphal.org/u/newcomer)\
**Post date:** [August 17, 2020, 3:46pm UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/3 "2020-08-17T15:46:37Z")

</div>

Thanks your reply.But now i want to know how to port libcanard to a stm32 board as a bare metal driver .Could you tell me how to realize it? Looking forward your reply!

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 17, 2020, 3:51pm UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/4 "2020-08-17T15:51:34Z")

</div>

We have the header file with the API specs in [Libcanard v1 STM32 driver design guidelines](https://forum.opencyphal.org/t/libcanard-v1-stm32-driver-design-guidelines/798). One just needs to write the implementation for it. Can you do that?

---

<div class="post-metadata">

**Author:** ![newcomer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/n/e5b9ba/32.png) [@newcomer](https://forum.opencyphal.org/u/newcomer)\
**Post date:** [August 20, 2020, 5:58am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/5 "2020-08-20T05:58:19Z")

</div>

Thanks for you suggestion.I am working on it . Now i want to understand the canard.c，but i couldn’t find any useful reference on [https://uavcan.org/](https://uavcan.org/). Could you please tell me how to realize the canard.c?

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 20, 2020, 8:31pm UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/7 "2020-08-20T20:31:32Z")

</div>

The documentation for libcanard is available at [https://github.com/UAVCAN/libcanard](https://github.com/UAVCAN/libcanard), if that’s what you’re asking.

---

<div class="post-metadata">

**Author:** ![newcomer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/n/e5b9ba/32.png) [@newcomer](https://forum.opencyphal.org/u/newcomer)\
**Post date:** [August 21, 2020, 12:32am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/8 "2020-08-21T00:32:16Z")

</div>

Thanks! But I know where the file is ,what i need to know is how to write the API in the canard.c. I have no idea,hope you give me a suggestion.Thank you very much! 😃

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 21, 2020, 1:01am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/9 "2020-08-21T01:01:52Z")

</div>

> [@newcomer](#):
>
> what i need to know is how to write the API in the canard.c

You don’t need to modify `canard.c`, it’s finished.

I think what you mean is how do you implement the STM32 driver whose header file I linked above; for that, you should just read the comments in the header file. They provide an exhaustive description of its behavioral contracts.

---

<div class="post-metadata">

**Author:** ![newcomer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/n/e5b9ba/32.png) [@newcomer](https://forum.opencyphal.org/u/newcomer)\
**Post date:** [August 21, 2020, 2:49am UTC](https://forum.opencyphal.org/t/how-can-i-use-libuavcan/912/10 "2020-08-21T02:49:29Z")

</div>

OK。 Thanks
