diff mbox

No device found for binding socket ieee802.15.4

Message ID 20160329083732.GA1114@omega (mailing list archive)
State Not Applicable
Headers show

Commit Message

Alexander Aring March 29, 2016, 8:37 a.m. UTC
Hi,

On Mon, Mar 28, 2016 at 10:46:04PM +0700, Adika Bintang Sulaeman wrote:
> Dear all linux-wpan developers and users,
> 
> This is my first time exploring 6LoWPAN and I would like to ask you
> some questions. Before getting into questions, these are the devices
> and set up that I use:
> -Raspberry Pi Model B Rev 2
> -Raspbian OS
> -kernel from bluetooth-next ver 4.5.0-rc5+
> -MRF24J40MA Transceiver
> 
> After setting up and installing the wpan-tools, I got my interface
> work by prompting "ip link show" and there is something like:
> 
> 3: wpan0 <BROADCAST,NOARP> mtu 123 qdisc noop state DOWN mode DEFAULT
> group default qlen 1000
>         link/ieee802.15.4 ee:3b:07:84:64:8c:2a:71 brd ff:ff:ff:ff:ff:ff:ff
> 
> The first thing I notice strange is why after the command "sudo ip
> link add link wpan0 name lowpan0 type lowpan" the output in "ip link
> show" is a bit different, especially in link/[825]:
> 
> 7: lowpan0 <BROADCAST,MULTICAST> mtu 1280 qdisc noop state DOWN mode
> DEFAULT group default qlen 1
>         link/[825] ee:3b:07:84:64:8c:2a:71 brd ff:ff:ff:ff:ff:ff:ff
> 
> So this is the FIRST QUESTION:
> 1. Is that normal/ok to have link/[825] instead of link/ieee802.15.4?
> 

It's okay. lowpan0 != wpan0 these are different interfaces. It should be
link/6lowpan, but this interface type is just too new and iproute2
doesn't know it. That's why it shows the identifier of such type.

We need a patch for iproute2:


Feel free somebody to submit such patch! I cc jukkar here, because this
issue is related to btle 6lowpan also. btw: I didn't test it, just
compile.

The 6lowpan interface is the same type for 802.15.4 6LoWPAN and BTLE
6loWPAN, see slides [0].

> The second thing I notice strange is after "sudo ip link set wpan0 up"
> for both wpan0 and lowpan0, the "ifconfig" command shows that these
> network interfaces have "Link encap:UNSPEC". If I'm not mistaken, Link
> encap shows the hardware family of the interface, right?
>
> So the SECOND QUESTION is:
> 2. Is that normal/ok to have Link encap:UNSPEC? Because this thing
> makes me suspicious about the next problem that I face.
> 

I think this requires a similar fix like above for "ifconfig". It's just
eyecandy. Remember: ip > ifconfig, because ifconfig is deprecated.

> I tried to run wpan-ping daemon from /wpan-tools/wpan-ping by
> prompting "wpan-ping --daemon" but the output is "bind: No such
> device". I tried to make my own code to make a server program which
> listen to this socket interface. But when binding with bind(), I got
> the same error status "No device found".
> 
> This leads to my THIRD QUESTION:
> 3. Why "no device found" appears? The transceiver is attached, the
> hardware address exists, the interface is up, and I am able to ping
> between two devices using ping6. I am suspicious that the problems
> that I ask you before have caused this problem.
> 
> Do you know what's wrong here?
> 

Don't know, I never tried the socket interface for 802.15.4. Stefan
Schmidt did some stuff there, maybe he can help here.

btw: the socket interface need a complete rework/cleanup. [1]

What I test is the raw socket interface over AF_PACKET for 802.15.4 interfaces.

- Alex

[0] http://www.netdevconf.org/1.1/proceedings/slides/aring-generic-6lowpan-branch.pdf
[1] https://github.com/linux-wpan/linux-wpan/issues/20
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Adika Bintang Sulaeman March 30, 2016, 1:43 a.m. UTC | #1
Hi Alexander Aring,

I have watched your presentation on [1] and I saw that you had the
"Link encap: UNSPEC" as well. Thank you for your explanation. I hope I
can get some directions or hints about the problem I face on running
"wpan-ping --daemon" and the socket for 802.15.4.

[1] https://archive.fosdem.org/2015/schedule/event/deviot09/

On 3/29/16, Alexander Aring <alex.aring@gmail.com> wrote:
> Hi,
>
> On Mon, Mar 28, 2016 at 10:46:04PM +0700, Adika Bintang Sulaeman wrote:
>> Dear all linux-wpan developers and users,
>>
>> This is my first time exploring 6LoWPAN and I would like to ask you
>> some questions. Before getting into questions, these are the devices
>> and set up that I use:
>> -Raspberry Pi Model B Rev 2
>> -Raspbian OS
>> -kernel from bluetooth-next ver 4.5.0-rc5+
>> -MRF24J40MA Transceiver
>>
>> After setting up and installing the wpan-tools, I got my interface
>> work by prompting "ip link show" and there is something like:
>>
>> 3: wpan0 <BROADCAST,NOARP> mtu 123 qdisc noop state DOWN mode DEFAULT
>> group default qlen 1000
>>         link/ieee802.15.4 ee:3b:07:84:64:8c:2a:71 brd
>> ff:ff:ff:ff:ff:ff:ff
>>
>> The first thing I notice strange is why after the command "sudo ip
>> link add link wpan0 name lowpan0 type lowpan" the output in "ip link
>> show" is a bit different, especially in link/[825]:
>>
>> 7: lowpan0 <BROADCAST,MULTICAST> mtu 1280 qdisc noop state DOWN mode
>> DEFAULT group default qlen 1
>>         link/[825] ee:3b:07:84:64:8c:2a:71 brd ff:ff:ff:ff:ff:ff:ff
>>
>> So this is the FIRST QUESTION:
>> 1. Is that normal/ok to have link/[825] instead of link/ieee802.15.4?
>>
>
> It's okay. lowpan0 != wpan0 these are different interfaces. It should be
> link/6lowpan, but this interface type is just too new and iproute2
> doesn't know it. That's why it shows the identifier of such type.
>
> We need a patch for iproute2:
>
> diff --git a/lib/ll_types.c b/lib/ll_types.c
> index 2c5bf8b..6c71c8b 100644
> --- a/lib/ll_types.c
> +++ b/lib/ll_types.c
> @@ -35,6 +35,7 @@ static const struct {
>         const char *name;
>  } arphrd_names[] = {
>  { 0, "generic" },
> +__PF(6LOWPAN,6lowpan)
>  __PF(ETHER,ether)
>  __PF(EETHER,eether)
>  __PF(AX25,ax25)
>
> Feel free somebody to submit such patch! I cc jukkar here, because this
> issue is related to btle 6lowpan also. btw: I didn't test it, just
> compile.
>
> The 6lowpan interface is the same type for 802.15.4 6LoWPAN and BTLE
> 6loWPAN, see slides [0].
>
>> The second thing I notice strange is after "sudo ip link set wpan0 up"
>> for both wpan0 and lowpan0, the "ifconfig" command shows that these
>> network interfaces have "Link encap:UNSPEC". If I'm not mistaken, Link
>> encap shows the hardware family of the interface, right?
>>
>> So the SECOND QUESTION is:
>> 2. Is that normal/ok to have Link encap:UNSPEC? Because this thing
>> makes me suspicious about the next problem that I face.
>>
>
> I think this requires a similar fix like above for "ifconfig". It's just
> eyecandy. Remember: ip > ifconfig, because ifconfig is deprecated.
>
>> I tried to run wpan-ping daemon from /wpan-tools/wpan-ping by
>> prompting "wpan-ping --daemon" but the output is "bind: No such
>> device". I tried to make my own code to make a server program which
>> listen to this socket interface. But when binding with bind(), I got
>> the same error status "No device found".
>>
>> This leads to my THIRD QUESTION:
>> 3. Why "no device found" appears? The transceiver is attached, the
>> hardware address exists, the interface is up, and I am able to ping
>> between two devices using ping6. I am suspicious that the problems
>> that I ask you before have caused this problem.
>>
>> Do you know what's wrong here?
>>
>
> Don't know, I never tried the socket interface for 802.15.4. Stefan
> Schmidt did some stuff there, maybe he can help here.
>
> btw: the socket interface need a complete rework/cleanup. [1]
>
> What I test is the raw socket interface over AF_PACKET for 802.15.4
> interfaces.
>
> - Alex
>
> [0]
> http://www.netdevconf.org/1.1/proceedings/slides/aring-generic-6lowpan-branch.pdf
> [1] https://github.com/linux-wpan/linux-wpan/issues/20
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt March 30, 2016, 8:29 a.m. UTC | #2
Hello.

On 30/03/16 03:43, Adika Bintang Sulaeman wrote:
> Hi Alexander Aring,
>
> I have watched your presentation on [1] and I saw that you had the
> "Link encap: UNSPEC" as well. Thank you for your explanation. I hope I
> can get some directions or hints about the problem I face on running
> "wpan-ping --daemon" and the socket for 802.15.4.

Are you actually sure you have the socket code for ieee802154 enabled in 
your kernel build?
CONFIG_IEEE802154_SOCKET

If it is not build into the kernel, are you sure the module is loaded?

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Adika Bintang Sulaeman March 30, 2016, 7:21 p.m. UTC | #3
> On 3/30/16, Stefan Schmidt <stefan@osg.samsung.com> wrote:
> Are you actually sure you have the socket code for ieee802154 enabled in
> your kernel build?
> CONFIG_IEEE802154_SOCKET
>
> If it is not build into the kernel, are you sure the module is loaded?
>
> regards
> Stefan Schmidt
>

Hi Stefan,

Fortunately I got 802.15.4 socket work by modifying wpan-ping code. By
the way, does the function generate_packet(unsigned char *buf, struct
config *conf, unsigned int seq_num) try to generate a packet which is
not 6LoWPAN? The code set 0x00 for the dispatch header. Now I need an
example of using 6LoWPAN socket API instead of creating packet
manually. Would anyone mind sharing the code if you have implement it?
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt March 30, 2016, 8:42 p.m. UTC | #4
Hello.

On 30/03/16 21:21, Adika Bintang Sulaeman wrote:
>> On 3/30/16, Stefan Schmidt <stefan@osg.samsung.com> wrote:
>> Are you actually sure you have the socket code for ieee802154 enabled in
>> your kernel build?
>> CONFIG_IEEE802154_SOCKET
>>
>> If it is not build into the kernel, are you sure the module is loaded?
>>
>> regards
>> Stefan Schmidt
>>
> Hi Stefan,
>
> Fortunately I got 802.15.4 socket work by modifying wpan-ping code.

I still don't see why you would need to do this. What did you change?

>   By
> the way, does the function generate_packet(unsigned char *buf, struct
> config *conf, unsigned int seq_num) try to generate a packet which is
> not 6LoWPAN? The code set 0x00 for the dispatch header.

Yes, it is a 802.15.4 ping utility not using 6lowpan at all. Thus the 
dispatch header is set to not a 6lowpan frame to avoid problems.

> Now I need an
> example of using 6LoWPAN socket API instead of creating packet
> manually. Would anyone mind sharing the code if you have implement it?

Its the normal IPv6 socket API of linux.

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Adika Bintang Sulaeman March 30, 2016, 8:49 p.m. UTC | #5
> I still don't see why you would need to do this. What did you change?

Sorry, I think I didn't explain clearly. I forgot to set pan_id and
short address. Now the wpan-ping works fine. I tried to create a
server program which is based on 802.15.4 and 6LoWPAN, and I imitate
the code from wpan-ping. I didn't mean that I literally changed the
wpan-ping.

> Its the normal IPv6 socket API of linux.

Thank you for your explanation, Stefan Schmidt.

Regards
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt March 30, 2016, 8:58 p.m. UTC | #6
Hello.

On 30/03/16 22:49, Adika Bintang Sulaeman wrote:
>> I still don't see why you would need to do this. What did you change?
> Sorry, I think I didn't explain clearly. I forgot to set pan_id and
> short address. Now the wpan-ping works fine. I tried to create a
> server program which is based on 802.15.4 and 6LoWPAN, and I imitate
> the code from wpan-ping. I didn't mean that I literally changed the
> wpan-ping.

OK, that makes more sense now. Without the address being setup this 
would fail.

>> Its the normal IPv6 socket API of linux.
> Thank you for your explanation, Stefan Schmidt.

If you have no specific requirements for the 6LoWPAN part normal 
client/server code written for the Linux IPv6 socket API should work 
over the lowpan0 interface.

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Adika Bintang Sulaeman April 3, 2016, 5:09 p.m. UTC | #7
> If you have no specific requirements for the 6LoWPAN part normal
> client/server code written for the Linux IPv6 socket API should work
> over the lowpan0 interface.

Hi Stefan,

I'm sorry if my question would be too stupid or shallow, I just want
to make sure because I'm really new to this.

I have run an example from [1] on client-server model using UDP and
IPv6. To run this example, on the client side I run the command:

"listener <IPv6 of another machine for lowpan interface>%lowpan0
the-payload-is-here"

According to [2], <IPv6 address>%<interface's name> notation means the
machine will try to communicate  to <IPv6 address> machine through the
<interface's name> interface. Hence, I basically have run
client/server program with Linux IPv6 over the lowpan0 interface.
Alexander Aring gave me a good presentation slide [3] and on page 12
it is clearly written that Linux still uses AF_INET6 for 6LoWPAN.

I just want to make sure whether my approach on making client-server
model over 6LoWPAN is right. I am not sure because I don't know
whether the IPv6 header is compressed using 6LoWPAN adaptation layer.

[1] http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#datagram
[2] http://veithen.github.io/2013/12/30/how-to-correctly-parse-ipv6-addresses.html
[3] http://www.netdevconf.org/1.1/proceedings/slides/aring-generic-6lowpan-branch.pdf

Best regards
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/ll_types.c b/lib/ll_types.c
index 2c5bf8b..6c71c8b 100644
--- a/lib/ll_types.c
+++ b/lib/ll_types.c
@@ -35,6 +35,7 @@  static const struct {
        const char *name;
 } arphrd_names[] = {
 { 0, "generic" },
+__PF(6LOWPAN,6lowpan)
 __PF(ETHER,ether)
 __PF(EETHER,eether)
 __PF(AX25,ax25)