Difference between revisions of "ECE 434 BeagleCom"
(→User Instructions) |
|||
Line 11: | Line 11: | ||
The operation is based around the concept of a centralized tracker and an associated swarm of peers. A user (peer) joins a P2P system by contacting the tracker. Any peer in the network that is registered, can upload files in the network and download files from the network. Peers which are online communicate with each other with the help of tracker. When multiple peers requesting for the same file, the publisher splits the file into chunks and different chunks are sent to each peer, and the peers download the missing chunks from each other, thus both download time and load on the server is reduced. The peers select the chunk to be downloaded using piece selection algorithm. Peers can upload file to another peer as well as download from another peer simultaneously. | The operation is based around the concept of a centralized tracker and an associated swarm of peers. A user (peer) joins a P2P system by contacting the tracker. Any peer in the network that is registered, can upload files in the network and download files from the network. Peers which are online communicate with each other with the help of tracker. When multiple peers requesting for the same file, the publisher splits the file into chunks and different chunks are sent to each peer, and the peers download the missing chunks from each other, thus both download time and load on the server is reduced. The peers select the chunk to be downloaded using piece selection algorithm. Peers can upload file to another peer as well as download from another peer simultaneously. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Packaging == | == Packaging == |
Revision as of 01:13, 23 February 2023
Embedded Linux Class by Mark A. Yoder
Team members: Glody Mutebwa and Angel Rivera
Contents
Executive Summary
Peer-to-Peer Network System aka BeagleCom
The operation is based around the concept of a centralized tracker and an associated swarm of peers. A user (peer) joins a P2P system by contacting the tracker. Any peer in the network that is registered, can upload files in the network and download files from the network. Peers which are online communicate with each other with the help of tracker. When multiple peers requesting for the same file, the publisher splits the file into chunks and different chunks are sent to each peer, and the peers download the missing chunks from each other, thus both download time and load on the server is reduced. The peers select the chunk to be downloaded using piece selection algorithm. Peers can upload file to another peer as well as download from another peer simultaneously.
Packaging
Our project consists the LCD display, 2 LEDs (red and green) and the BeagleBone Black.
The two LEDs are connected through P9_11 and P9_12. The LCD display is connected for a setup of SPI1.
Installation Instructions
If you want to install the project onto your own BeagleBone, be sure to go to the Github page and clone the project. The README.md file lists the proper commands in order to run certain parts of the project.
Be sure to also have Python installed on the BeagleBone in order to run certain pieces of code.
User Instructions
- After you cloned the project into your BeagleBone Black, move to the source folder
bone$ cd BeagleCom/src
- If you want to start the IRC client and start chatting, follow the command line down below.
bone$ ./irc_client.py <username> <channelname>
The <username> is what your name you want it to be when others see you at the IRC channel, and the <channelname> is the name of the IRC channel. We set up a channel specifically called #BeagleCom at Freenode. You can test this out by joining the IRC channel through a host computer and see if your BeagleBone joins the IRC channel. You do not need the # when entering the channel name on the command line. Note that this will not work if an IRC channel has a password to enter.
When you receive a message from the IRC channel, the LED linked to the client will flash to signify that you have received it.
- If you want to start receiving files from another BeagleBone or host computer, run this command line
bone$ ./receiver.py
- When you run this code, it'll ask for a port and a local host IP
Enter port : {insert port # here} Enter host (ex:localhost): {insert host # here} Listening on port {port#}
- On the other side (whether through BeagleBone or host PC), run this command to send the file to the receiving BeagleBone
bone$ ./sendfile.py -i <localhost> -p <port> -f <file>
The <localhost> should be whatever the IP address of the Linux system that you're using, the <port> was of your choosing (we usually use port 8888), and the <file> is the file that you send to the receiver (we tested using .txt files to speed testing).
Highlights
Theory of Operation
Work Breakdown
Work | Contributor |
---|---|
IRC Communication Client | Glody |
File Transmission Code | Glody |
LCD Display Implementation | Angel |
Wiki and Hackster.io | Angel |
Future Work
The overall idea was to create our own IRC webpage hosted by a BeagleBone and have the interface of having text and files be sent through that medium, such as a textbox that can be typed up and sent through using the IRC client that we implemented previously. There would be another button that would allow us to pick a file in the Linux system to be sent through, which would be then use the File Transmission Python code to send the file from one BeagleBone to another. This would all be done using Flask as an interface and HTML setup for proper use.
Conclusions
Embedded Linux Class by Mark A. Yoder