# Driver\_output\_binary returns a list

**URL:** <https://erlangforums.com/t/driver-output-binary-returns-a-list/1626>\
**Category:** Questions / Help\
**Tags:** port\_driver\
**Created:** [July 7, 2022, 1:57am UTC](https://erlangforums.com/t/driver-output-binary-returns-a-list/1626 "2022-07-07T01:57:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![joseph](https://erlangforums.com/user_avatar/erlangforums.com/joseph/32/1058_2.png) [@joseph](https://erlangforums.com/u/joseph)\
**Post date:** [July 7, 2022, 1:57am UTC](https://erlangforums.com/t/driver-output-binary-returns-a-list/1626/1 "2022-07-07T01:57:30Z")

</div>

I have written a port driver, and I am using ‘driver\_output\_binary’ to transfer a binary I allocated in the driver to the port owner. The documentation says that I should receive a message that looks like this `[H1, H2 | <<T>>]` ([Erlang -- erl\_driver](https://www.erlang.org/doc/man/erl_driver.html#driver_output_binary)).

I am getting `[H1, H2 | T]` instead, where T is a list and not a binary. This isn’t ideal because it takes a performance hit for me to convert the list T back into a binary. I am running on OTP 21, could that be causing the issue? Or do I have something wrong in my code? Below is an example code:

> short int hdr = 0x1234; // Populate header information  
> ErlDrvBinary\* pBinary = driver\_alloc\_binary(1000);
> 
> // Populate pBinary with a bunch of data  
> driver\_output\_binary(port, (char\*)&hdr, sizeof(hdr), pBinary, 0, 1000);

---

<div class="post-metadata">

**Author:** ![garazdawi](https://erlangforums.com/user_avatar/erlangforums.com/garazdawi/32/175_2.png) [@garazdawi](https://erlangforums.com/u/garazdawi)\
**Post date:** [July 7, 2022, 6:13am UTC](https://erlangforums.com/t/driver-output-binary-returns-a-list/1626/2 "2022-07-07T06:13:38Z")

</div>

Hello!

The port also needs to be in `binary` mode in order for it to be delivered as a binary. See [erlang:open\_port/2](https://www.erlang.org/doc/man/erlang.html#open_port-2) for how to do that.

---

<div class="post-metadata">

**Author:** ![joseph](https://erlangforums.com/user_avatar/erlangforums.com/joseph/32/1058_2.png) [@joseph](https://erlangforums.com/u/joseph)\
**Post date:** [July 7, 2022, 2:21pm UTC](https://erlangforums.com/t/driver-output-binary-returns-a-list/1626/3 "2022-07-07T14:21:30Z")

</div>

Thank you, that was exactly my problem.
