diff --git a/community/join/index.html b/community/join/index.html index e6dc7c3..b63cc7e 100644 --- a/community/join/index.html +++ b/community/join/index.html @@ -76,7 +76,7 @@
  • Follow our social media!
  • -
  • Visit our Space! +
  • Visit our Community Lab Space!
  • @@ -182,7 +182,7 @@

    Follow our social media!

    Our social media team makes posts about upcoming meetings, social events, and they also occasionally make educational posts!

    Don't miss out and follow us on Instagram, Facebook, and Twitter.

    -

    Visit our Space!

    +

    Visit our Community Lab Space!

    See the Space for details.

    diff --git a/index.html b/index.html index 4bbaa76..b86c33f 100644 --- a/index.html +++ b/index.html @@ -204,5 +204,5 @@

    What's here?

    diff --git a/search/search_index.json b/search/search_index.json index fc756ba..7a3201a 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Seattle Community Network Docs Welcome to the documentation website for the Seattle Community Network ! If you're looking for our main website, it is located at https://www.seattlecommunitynetwork.org . You're in the Right Place Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet , get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP We are a community . It's in our name! So, why not start by joining our community ? It's easy. What's here? Some topics you can find on this website include: FAQ - get the answers to some common questions. Community - get involved and learn more about our community, our rules, and what we're up to. Learn - gain some new skills that you can use to help out with our networks. Infrastructure - get the details on how our networks work behind the scenes.","title":"Home"},{"location":"#seattle-community-network-docs","text":"Welcome to the documentation website for the Seattle Community Network ! If you're looking for our main website, it is located at https://www.seattlecommunitynetwork.org .","title":"Seattle Community Network Docs"},{"location":"#youre-in-the-right-place","text":"Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet , get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP We are a community . It's in our name! So, why not start by joining our community ? It's easy.","title":"You're in the Right Place"},{"location":"#whats-here","text":"Some topics you can find on this website include: FAQ - get the answers to some common questions. Community - get involved and learn more about our community, our rules, and what we're up to. Learn - gain some new skills that you can use to help out with our networks. Infrastructure - get the details on how our networks work behind the scenes.","title":"What's here?"},{"location":"community/code-of-conduct/","text":"Code of Conduct The Seattle Community Network (SCN) is dedicated to fostering an environment in which everyone can participate in our meetups, installs, online spaces, and any other community event. We believe that diversity in our community is critical and should be celebrated. We welcome everyone of any race, age, gender, nationality, gender identity and expression, sexual orientation, disability, physical appearance, body size, religion, education, and skill level. The SCN community and experience often extends outside those spaces. Members meet in person to collaborate on projects, attend related meetups or conferences together, and communicate on social media. Abusive or unwelcoming behavior between SCN Members still has a profound impact on individuals and on the community when it happens beyond our events and online forums. We will use our discretion when deciding whether to enforce this code of conduct after reports of such behavior happening outside of our spaces, taking into account the impact on the individual Members involved as well as the impact on the community at large. Types of Behavior Encouraged Behavior All participants are expected to: be considerate, respectful, and collaborative. Specifically we expect participants to: Demonstrate empathy, kindness, and patience toward other people Assume the best intentions from others Be respectful of differing opinions, viewpoints, and experiences Give and gracefully accept constructive feedback Accept responsibility and apologize to those affected by our mistakes, and learn from the experience Focus on what is best not just for us as individuals, but for the overall community Unacceptable Behavior The following types of behavior are unacceptable at SCN, both online and in-person, and constitute code of conduct violations. Abusive Behavior Harassment Offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, nationality, immigration status, language, religion, or education level Sexual images in public spaces, unwelcome sexual or romantic attention, and inappropriate physical contact. Threats Threating someone physically or verbally. For example, threatening to publicize sensitive information about someone's personal life Hacking Any kind of malicious or harmful behavior towards other network users and their devices/data/property, or towards the network and its equipment or normal functioning. For example, DDOS attacks or unauthorized remote access. Unwelcoming Behavior Blatant -isms Saying things that are explicitly racist, sexist, homophobic, etc. For example, arguing that some people are less intelligent because of their gender, race or religion. Subtle -isms and small mistakes made in conversation are not code of conduct violations. However, repeating something after it has been pointed out to you that you made a member feel unwelcome, broke a social rule or antagonizing or arguing with someone who has pointed out your subtle -ism is considered unwelcoming behavior and is not allowed in SCN. Maliciousness towards other members Deliberately attempting to make others feel bad, name-calling, singling out others for derision or exclusion. For example, telling somone they're not technical enough or that they don't belong in SCN. Being especially unpleasant For example, if we've received reports from multiple members of annoying, rude, or especially distracting behavior. For example, repeatedly engaging in bad faith arguments, talking down to people, or excluding people from participation. Reporting Please report code of conduct violations either to the event organizer, by emailing lcl@seattlecommunitynetwork.org or by alerting moderators on Discord with the @moderators group tag. All of our moderators are volunteers, and will response with their best effort. However, if you provide your name, or contact info we promise to respond within two business days. How to Report In your report, please include: Subject line \"[SCN Code of Conduct Violation Report]\" followed by descriptive subject Your name This is incredibly helpful for us to be able to follow up with you, and ask questions to better understand the situation. You are welcome to report anonymously. Please only use this option if you really need to, and know that we might not be able to take action without knowing who you are. In any case, provide an email address so we can correspond with you about the report. A detailed description of what happened If the violation happened online, please link to or send us the relevant text. If the violation happened in person, please detail exactly what the other person said or did. In order to take action, we need to know the concrete actions that someone took. Where and when the incident happened Any other relevant context. Do you have examples of a pattern of similar behavior? Do you have a relationship with this person outside of SCN? If/how you've already responded - this lets us know the current state of the situation. Why to Report You are responsible for making SCN a safe and comfortable space for everyone. Everyone in our community shares this responsibility. Our volunteer Moderators are not around all the time, so we cannot enforce the code of conduct without your help. The consequences for SCN of not reporting bad behavior outweigh the consequences for one person reporting it. We sometimes hear \u201cI don\u2019t want X person to meet consequences because I told someone about their bad behavior.\u201d Consider the impact on everyone else at SCN of letting their behavior continue unchecked. SCN only works as a self-directed, community-driven effort because of shared trust between members. Reporting code of conduct violations helps us identify when this trust is broken, to prevent that from happening in the future. Enforcement Guidelines Moderators will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct. Correction Community Impact: Unwelcoming behavior. Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from moderators, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public or private apology may be requested in the venue where the behavior took place, for example on Discord or at the event. Warning Community Impact: A violation through a single incident of abusive behavior or series of unwelcoming behaviors. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. Temporary Ban Community Impact: A serious violation of community standards, including sustained unwelcoming behavior. Consequence: A temporary ban from any sort of participation, interaction, or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. Permanent Ban Community Impact: Demonstrating a pattern of violation of community standards, including sustained unwelcoming behavior, harassment or threatening of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of participation, or public interaction within the community. Discussion If you have questions about any aspect of the code of conduct, or want to propose amending it, please contact the @moderators group, or drop in to the public #governance channel on Discord. Attribution Taken almost verbatim from the NYC Mesh Code of Conduct . NYC Mesh CoC Attribution: Most of this is from the Recurse Center CoC. Other parts are from Strange Loop(community goals), Contributor Covenant (portion of the community goals, encouraged behaviors, enforcement guidelines), and the Toronto Mesh/Geek Feminism (guidelines for moderators).","title":"Code of Conduct"},{"location":"community/code-of-conduct/#code-of-conduct","text":"The Seattle Community Network (SCN) is dedicated to fostering an environment in which everyone can participate in our meetups, installs, online spaces, and any other community event. We believe that diversity in our community is critical and should be celebrated. We welcome everyone of any race, age, gender, nationality, gender identity and expression, sexual orientation, disability, physical appearance, body size, religion, education, and skill level. The SCN community and experience often extends outside those spaces. Members meet in person to collaborate on projects, attend related meetups or conferences together, and communicate on social media. Abusive or unwelcoming behavior between SCN Members still has a profound impact on individuals and on the community when it happens beyond our events and online forums. We will use our discretion when deciding whether to enforce this code of conduct after reports of such behavior happening outside of our spaces, taking into account the impact on the individual Members involved as well as the impact on the community at large.","title":"Code of Conduct"},{"location":"community/code-of-conduct/#types-of-behavior","text":"","title":"Types of Behavior"},{"location":"community/code-of-conduct/#encouraged-behavior","text":"All participants are expected to: be considerate, respectful, and collaborative. Specifically we expect participants to: Demonstrate empathy, kindness, and patience toward other people Assume the best intentions from others Be respectful of differing opinions, viewpoints, and experiences Give and gracefully accept constructive feedback Accept responsibility and apologize to those affected by our mistakes, and learn from the experience Focus on what is best not just for us as individuals, but for the overall community","title":"Encouraged Behavior"},{"location":"community/code-of-conduct/#unacceptable-behavior","text":"The following types of behavior are unacceptable at SCN, both online and in-person, and constitute code of conduct violations.","title":"Unacceptable Behavior"},{"location":"community/code-of-conduct/#abusive-behavior","text":"Harassment Offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, nationality, immigration status, language, religion, or education level Sexual images in public spaces, unwelcome sexual or romantic attention, and inappropriate physical contact. Threats Threating someone physically or verbally. For example, threatening to publicize sensitive information about someone's personal life Hacking Any kind of malicious or harmful behavior towards other network users and their devices/data/property, or towards the network and its equipment or normal functioning. For example, DDOS attacks or unauthorized remote access.","title":"Abusive Behavior"},{"location":"community/code-of-conduct/#unwelcoming-behavior","text":"Blatant -isms Saying things that are explicitly racist, sexist, homophobic, etc. For example, arguing that some people are less intelligent because of their gender, race or religion. Subtle -isms and small mistakes made in conversation are not code of conduct violations. However, repeating something after it has been pointed out to you that you made a member feel unwelcome, broke a social rule or antagonizing or arguing with someone who has pointed out your subtle -ism is considered unwelcoming behavior and is not allowed in SCN. Maliciousness towards other members Deliberately attempting to make others feel bad, name-calling, singling out others for derision or exclusion. For example, telling somone they're not technical enough or that they don't belong in SCN. Being especially unpleasant For example, if we've received reports from multiple members of annoying, rude, or especially distracting behavior. For example, repeatedly engaging in bad faith arguments, talking down to people, or excluding people from participation.","title":"Unwelcoming Behavior"},{"location":"community/code-of-conduct/#reporting","text":"Please report code of conduct violations either to the event organizer, by emailing lcl@seattlecommunitynetwork.org or by alerting moderators on Discord with the @moderators group tag. All of our moderators are volunteers, and will response with their best effort. However, if you provide your name, or contact info we promise to respond within two business days.","title":"Reporting"},{"location":"community/code-of-conduct/#how-to-report","text":"In your report, please include: Subject line \"[SCN Code of Conduct Violation Report]\" followed by descriptive subject Your name This is incredibly helpful for us to be able to follow up with you, and ask questions to better understand the situation. You are welcome to report anonymously. Please only use this option if you really need to, and know that we might not be able to take action without knowing who you are. In any case, provide an email address so we can correspond with you about the report. A detailed description of what happened If the violation happened online, please link to or send us the relevant text. If the violation happened in person, please detail exactly what the other person said or did. In order to take action, we need to know the concrete actions that someone took. Where and when the incident happened Any other relevant context. Do you have examples of a pattern of similar behavior? Do you have a relationship with this person outside of SCN? If/how you've already responded - this lets us know the current state of the situation.","title":"How to Report"},{"location":"community/code-of-conduct/#why-to-report","text":"You are responsible for making SCN a safe and comfortable space for everyone. Everyone in our community shares this responsibility. Our volunteer Moderators are not around all the time, so we cannot enforce the code of conduct without your help. The consequences for SCN of not reporting bad behavior outweigh the consequences for one person reporting it. We sometimes hear \u201cI don\u2019t want X person to meet consequences because I told someone about their bad behavior.\u201d Consider the impact on everyone else at SCN of letting their behavior continue unchecked. SCN only works as a self-directed, community-driven effort because of shared trust between members. Reporting code of conduct violations helps us identify when this trust is broken, to prevent that from happening in the future.","title":"Why to Report"},{"location":"community/code-of-conduct/#enforcement-guidelines","text":"Moderators will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct.","title":"Enforcement Guidelines"},{"location":"community/code-of-conduct/#correction","text":"Community Impact: Unwelcoming behavior. Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from moderators, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public or private apology may be requested in the venue where the behavior took place, for example on Discord or at the event.","title":"Correction"},{"location":"community/code-of-conduct/#warning","text":"Community Impact: A violation through a single incident of abusive behavior or series of unwelcoming behaviors. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.","title":"Warning"},{"location":"community/code-of-conduct/#temporary-ban","text":"Community Impact: A serious violation of community standards, including sustained unwelcoming behavior. Consequence: A temporary ban from any sort of participation, interaction, or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.","title":"Temporary Ban"},{"location":"community/code-of-conduct/#permanent-ban","text":"Community Impact: Demonstrating a pattern of violation of community standards, including sustained unwelcoming behavior, harassment or threatening of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of participation, or public interaction within the community.","title":"Permanent Ban"},{"location":"community/code-of-conduct/#discussion","text":"If you have questions about any aspect of the code of conduct, or want to propose amending it, please contact the @moderators group, or drop in to the public #governance channel on Discord.","title":"Discussion"},{"location":"community/code-of-conduct/#attribution","text":"Taken almost verbatim from the NYC Mesh Code of Conduct . NYC Mesh CoC Attribution: Most of this is from the Recurse Center CoC. Other parts are from Strange Loop(community goals), Contributor Covenant (portion of the community goals, encouraged behaviors, enforcement guidelines), and the Toronto Mesh/Geek Feminism (guidelines for moderators).","title":"Attribution"},{"location":"community/community-networking-toolkit/","text":"Community Networking Toolkit This is a toolkit/resource guide for anyone interested in starting up their own community network. Recommended Deployment Kit Here is a spreadsheet containing a bunch of tools and equipment that you should bring to network deployments. This was created by Esther Jang who has a lot of practical experience deploying sites. This spreadsheet is color-coded into different categories based on how important they are to have! Ethernet Crimping Ethernet crimping is an important skill for network site installations. The length of an ethernet cable connection is only truly known once you're on site so it is useful to be able to quickly cut ethernet cable to the desired length and crimp it. Our Guide to Crimping Workshop Slides Crimping Video Cable Testing Video (first 7 min only for basics) Ethernet Color Coding Diagrams Both the T-568A and the T-568B standard Straight-Through cables are used most often as patch cords for your Ethernet connections. If you require a cable to connect two Ethernet devices directly together without a hub or when you connect two hubs together, you will need to use a Crossover cable instead. Internet Society (ISOC) Materials Introduction to Community Networks All-aspects Community Networking Guides AlterMundi (Spanish Language) NYC Mesh - How to start a community network NYC Mesh Docs Telecommunications Reclaimed - Linked from NYC Mesh guide Start your own ISP This site is dedicated to helping you start your own Internet Service Provider. Specifically this guide is about building a Wireless ISP (WISP). Commotion Construction Kit The Commotion Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Neighborhood Network Construction Kit The Neighborhood Network Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Many of these activities were first released as part of the Commotion project. Community Technology Field Guide A collective resource for digital stewardship, digital justice and community infrastructure. These resources emphasize self-governance, participatory learning, collaborative design and sustainability. Building Broadband Commons - Tools for Planners and Communities Next Century City - Becoming Broadband Ready, a Toolkit for Communities Wireless Networking in the Developing World - Online Book Wireless Networking in the Developing World is a free book about designing, implementing, and maintaining low-cost wireless networks. Community Networks in Comics It is not easy to explain the concepts behind community networks, both the technical characteristics of radio frequency networks and the social and human aspects of community technologies. Teaching a workshop for popular groups using colonizing terms and methodologies can increase the existing barrier between people and a technology that was not created for their interests. With this in mind, images and analogies are powerful tools to make it easier to explain a technical term or an idea. We reject the premise that to do so would in any way underestimate people\u2019s ability to understand technical matters. Building Consentful Tech Zine In 2017, Una Lee, Dann Toliver, and their design firm And Also Too published the Building Consentful Tech Zine as a provocation on how to think about and design for consentfulness. This framing really resonated with our group, so we expanded it into a project where we prototype what this looks like in practice (and learned some interaction design methodologies on the way)! Report on Digital Skill Sets for Diverse Users The City of Seattle, in partnership with Technology and Social Change Group (TASCHA), developed a set of Digital Equity Indicators that helps measure Seattle\u2019s progress in meeting the initiative's goals. What digital skills do existing frameworks and curricula cover? What digital skills should the City and partners recommend to digital skill instructors to teach and promote? Do these resources have corresponding assessments to help assess individuals\u2019 digital skill abilities? Worksheet for Digital Skills for Diverse Users A list of 74 skills identified by TASCHA (see above resource) to include in digital equity curriculums Report on current state of Detroit Community Network In this case study, we focus on Detroit and the predominantly Black and lower-income neighborhood of the North End as an example of innovative, community-scale projects that are locally generated. New Community Networks by Douglas Schuler Online book about building and socially sustaining community networks, based on Doug Schuler's experiences with the Seattle Community Network project in the 90's (1996)","title":"Community Networking Toolkit"},{"location":"community/community-networking-toolkit/#community-networking-toolkit","text":"This is a toolkit/resource guide for anyone interested in starting up their own community network.","title":"Community Networking Toolkit"},{"location":"community/community-networking-toolkit/#recommended-deployment-kit","text":"Here is a spreadsheet containing a bunch of tools and equipment that you should bring to network deployments. This was created by Esther Jang who has a lot of practical experience deploying sites. This spreadsheet is color-coded into different categories based on how important they are to have!","title":"Recommended Deployment Kit"},{"location":"community/community-networking-toolkit/#ethernet-crimping","text":"Ethernet crimping is an important skill for network site installations. The length of an ethernet cable connection is only truly known once you're on site so it is useful to be able to quickly cut ethernet cable to the desired length and crimp it. Our Guide to Crimping Workshop Slides Crimping Video Cable Testing Video (first 7 min only for basics) Ethernet Color Coding Diagrams Both the T-568A and the T-568B standard Straight-Through cables are used most often as patch cords for your Ethernet connections. If you require a cable to connect two Ethernet devices directly together without a hub or when you connect two hubs together, you will need to use a Crossover cable instead.","title":"Ethernet Crimping"},{"location":"community/community-networking-toolkit/#internet-society-isoc-materials","text":"Introduction to Community Networks","title":"Internet Society (ISOC) Materials"},{"location":"community/community-networking-toolkit/#all-aspects-community-networking-guides","text":"AlterMundi (Spanish Language) NYC Mesh - How to start a community network NYC Mesh Docs Telecommunications Reclaimed - Linked from NYC Mesh guide Start your own ISP This site is dedicated to helping you start your own Internet Service Provider. Specifically this guide is about building a Wireless ISP (WISP). Commotion Construction Kit The Commotion Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Neighborhood Network Construction Kit The Neighborhood Network Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Many of these activities were first released as part of the Commotion project. Community Technology Field Guide A collective resource for digital stewardship, digital justice and community infrastructure. These resources emphasize self-governance, participatory learning, collaborative design and sustainability. Building Broadband Commons - Tools for Planners and Communities Next Century City - Becoming Broadband Ready, a Toolkit for Communities Wireless Networking in the Developing World - Online Book Wireless Networking in the Developing World is a free book about designing, implementing, and maintaining low-cost wireless networks. Community Networks in Comics It is not easy to explain the concepts behind community networks, both the technical characteristics of radio frequency networks and the social and human aspects of community technologies. Teaching a workshop for popular groups using colonizing terms and methodologies can increase the existing barrier between people and a technology that was not created for their interests. With this in mind, images and analogies are powerful tools to make it easier to explain a technical term or an idea. We reject the premise that to do so would in any way underestimate people\u2019s ability to understand technical matters. Building Consentful Tech Zine In 2017, Una Lee, Dann Toliver, and their design firm And Also Too published the Building Consentful Tech Zine as a provocation on how to think about and design for consentfulness. This framing really resonated with our group, so we expanded it into a project where we prototype what this looks like in practice (and learned some interaction design methodologies on the way)! Report on Digital Skill Sets for Diverse Users The City of Seattle, in partnership with Technology and Social Change Group (TASCHA), developed a set of Digital Equity Indicators that helps measure Seattle\u2019s progress in meeting the initiative's goals. What digital skills do existing frameworks and curricula cover? What digital skills should the City and partners recommend to digital skill instructors to teach and promote? Do these resources have corresponding assessments to help assess individuals\u2019 digital skill abilities? Worksheet for Digital Skills for Diverse Users A list of 74 skills identified by TASCHA (see above resource) to include in digital equity curriculums Report on current state of Detroit Community Network In this case study, we focus on Detroit and the predominantly Black and lower-income neighborhood of the North End as an example of innovative, community-scale projects that are locally generated. New Community Networks by Douglas Schuler Online book about building and socially sustaining community networks, based on Doug Schuler's experiences with the Seattle Community Network project in the 90's (1996)","title":"All-aspects Community Networking Guides"},{"location":"community/join/","text":"Join Us Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet, get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP Do everything on this page! Our community is spread out in a lot of different places, so doing everything is the best way to make sure you don't miss out. Join our Discord! Discord is a messaging platform that we use to stay in touch with each other, organize our different teams, and update everyone on last minute things. This is a MUST do if you don't want to get left out! Follow these steps to join our Discord server: Click the invite link to enter the Discord server. Introduce yourself on the #introductions channel and friend request one of the moderators so they can chat with you (you can write @moderators in your message to get their attention). They will need to add a role for you as a \"member\" so you can stay on the server before you log out, otherwise you will have to be invited and join again. Install Discord on your computer , Android , or iOS device to always stay up-to-date. Chat with someone! The best way to get involved with the network is to find someone that can direct you! Most of our work happens in teams. Here's how to join a team . Subscribe to our Google calendar! On our Google calendar we post regular occurring meetings and any impromptu events like social events, emergency repairs, site visits, etc. This is one of the only places to find out about the meetings our various teams are having! Join using one of these options: Use this link that should prompt you to add the calendar to your Google account Use this ICS file to manually add the calendar via the iCalendar format. View the calendar here Follow our social media! Our social media team makes posts about upcoming meetings, social events, and they also occasionally make educational posts! Don't miss out and follow us on Instagram , Facebook , and Twitter . Visit our Space! See the Space for details.","title":"Join Us"},{"location":"community/join/#join-us","text":"Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet, get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP Do everything on this page! Our community is spread out in a lot of different places, so doing everything is the best way to make sure you don't miss out.","title":"Join Us"},{"location":"community/join/#join-our-discord","text":"Discord is a messaging platform that we use to stay in touch with each other, organize our different teams, and update everyone on last minute things. This is a MUST do if you don't want to get left out!","title":"Join our Discord!"},{"location":"community/join/#follow-these-steps-to-join-our-discord-server","text":"Click the invite link to enter the Discord server. Introduce yourself on the #introductions channel and friend request one of the moderators so they can chat with you (you can write @moderators in your message to get their attention). They will need to add a role for you as a \"member\" so you can stay on the server before you log out, otherwise you will have to be invited and join again. Install Discord on your computer , Android , or iOS device to always stay up-to-date.","title":"Follow these steps to join our Discord server:"},{"location":"community/join/#chat-with-someone","text":"The best way to get involved with the network is to find someone that can direct you! Most of our work happens in teams. Here's how to join a team .","title":"Chat with someone!"},{"location":"community/join/#subscribe-to-our-google-calendar","text":"On our Google calendar we post regular occurring meetings and any impromptu events like social events, emergency repairs, site visits, etc. This is one of the only places to find out about the meetings our various teams are having! Join using one of these options: Use this link that should prompt you to add the calendar to your Google account Use this ICS file to manually add the calendar via the iCalendar format. View the calendar here","title":"Subscribe to our Google calendar!"},{"location":"community/join/#follow-our-social-media","text":"Our social media team makes posts about upcoming meetings, social events, and they also occasionally make educational posts! Don't miss out and follow us on Instagram , Facebook , and Twitter .","title":"Follow our social media!"},{"location":"community/join/#visit-our-space","text":"See the Space for details.","title":"Visit our Space!"},{"location":"community/mission-vision-values/","text":"Mission, Vision, and Values Mission LCL seeks to democratize knowledge, skills, and resources to enable people to establish and run their own local, community-centered, and community-owned Internet access networks and digital infrastructure. Vision We envision a world where no one is excluded from access to the Internet, and where anyone can achieve the expertise and capability to bring communications infrastructure to their community and improve their quality of life. Values We value the ability to access the Internet and all public information and digital resources therein as a human right. - Digital privacy of our users and partner organizations - Collaboration, especially with the communities and organizations we work with - Care, consideration, allyship, and peer mentorship between individuals within our organization - Education, sharing, and capacity-building- emphasize teaching and dissemination of information and skills - Openness, transparency, and accountability of our organization and its processes - Democratization and inclusiveness of decision processes among stakeholders - Long-term sustainability of our technology deployments and community structures - Equity in planning for resource allocation, programming, and contribution","title":"Mission, Vision, Values"},{"location":"community/mission-vision-values/#mission-vision-and-values","text":"","title":"Mission, Vision, and Values"},{"location":"community/mission-vision-values/#mission","text":"LCL seeks to democratize knowledge, skills, and resources to enable people to establish and run their own local, community-centered, and community-owned Internet access networks and digital infrastructure.","title":"Mission"},{"location":"community/mission-vision-values/#vision","text":"We envision a world where no one is excluded from access to the Internet, and where anyone can achieve the expertise and capability to bring communications infrastructure to their community and improve their quality of life.","title":"Vision"},{"location":"community/mission-vision-values/#values","text":"We value the ability to access the Internet and all public information and digital resources therein as a human right. - Digital privacy of our users and partner organizations - Collaboration, especially with the communities and organizations we work with - Care, consideration, allyship, and peer mentorship between individuals within our organization - Education, sharing, and capacity-building- emphasize teaching and dissemination of information and skills - Openness, transparency, and accountability of our organization and its processes - Democratization and inclusiveness of decision processes among stakeholders - Long-term sustainability of our technology deployments and community structures - Equity in planning for resource allocation, programming, and contribution","title":"Values"},{"location":"community/partners/","text":"Our Partners Althea ALTSpace API Chaya (WiFi is a Lifeline) Black Brilliance Research Project Breakfast Group City of Seattle IT Compassion8 Innovation /dev/hack Filipino Community of Seattle Internet Archive Internet Society King County Library System Low Income Housing Institute Nickelsville Seattle Makers Seattle Public Schools Tacoma Cooperative Network Tacoma Public Library The Silent Task Force University of Washington","title":"Our Partners"},{"location":"community/partners/#our-partners","text":"Althea ALTSpace API Chaya (WiFi is a Lifeline) Black Brilliance Research Project Breakfast Group City of Seattle IT Compassion8 Innovation /dev/hack Filipino Community of Seattle Internet Archive Internet Society King County Library System Low Income Housing Institute Nickelsville Seattle Makers Seattle Public Schools Tacoma Cooperative Network Tacoma Public Library The Silent Task Force University of Washington","title":"Our Partners"},{"location":"community/space/","text":"Seattle Community Network Lab Space This page under construction! Address: Co-located at the /dev/hack hackerspace in Seattle, WA. 4534 1/2 University Way NE, Seattle WA 98105","title":"SCN Community Lab Space"},{"location":"community/space/#seattle-community-network-lab-space","text":"","title":"Seattle Community Network Lab Space"},{"location":"community/space/#this-page-under-construction","text":"Address: Co-located at the /dev/hack hackerspace in Seattle, WA. 4534 1/2 University Way NE, Seattle WA 98105","title":"This page under construction!"},{"location":"community/teams/","text":"Join a Team As a volunteer-run community network, we are always in need of extra hands. If you're interested in helping out, check out what our teams are working on here! Feel free to have informational meetings with the respective team leads to learn more about how you can help. There's no commitment required and we welcome you to take on as much work as you have the capacity for. Outreach Our outreach team is responsible for finding new site host partners, finding users, and maintaining communications with our current partners. Message the #outreach channel in Discord and contact Esther Jang to learn more about how you can get involved. This is the perfect team for you if any of the following apply to you: Experience with community organizing Have community connections in the Greater Seattle Area Have cultural humility and experience partnering with marginalized communities Have the ability to translate and/or interpret into non-English languages common in the Seattle area such as Spanish, Vietnamese, Somali, Oromo, Khmer, and more. As of July 2021, the primary objective of the outreach team is to get connected with users for our network sites that fit any of the following criteria: Unemployed Seniors Housing-unstable or houseless Non-English speaking Social Media Our social media team is in charge of our various accounts on Instagram , Facebook , and Twitter . They also develop branding and marketing materials for our various projects. Message the #social-media channel in Discord and contact Firn Tieanklin to learn more about how you can get involved. You should join this team if you have experience in or are interested in practicing any of the following skills/technologies: - Canva - Design - Marketing - Photography/Videography Web Development Our web development team is working on redesigning and developing our new website. Message the #website channel in Discord to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: HTML/CSS Javascript Bootstrap React Redux Web Design (Using Figma) Mobile App Development Our mobile app development team is currently developing an Android app to record cell network performance metrics during our field tests. Message the #measurement channel in Discord and contact Zhennan Zhou to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Android app development iOS app development Java Object oriented programming Open source development, Git, and GitHub Education Our education team plays a core role in our community networks as they enable our networks to be community-owned and operated. The education team is responsible for developing educational materials, running workshops, and teaching our Digital Steward cohorts. Message the #digital-stewards channel in Discord and contact Esther Jang to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Teaching Curriculum development Computer networks, LTE networks, and community networks Linux Community organizing Fundraising Our fundraising team is currently setting up a crowdfunding platform to raise money for various expenses that this project requires. Our fundraising team is also working on applying for various community grants and research grants. Message the #funding channel in Discord and contact Esther Jang to learn more about how you can get involved. Accounting & Legal Local Connectivity Lab, the nonprofit organizing that is incubating this project, often runs into accounting and legal challenges. If you are willing to provide pro bono services to benefit the community network, please contact Esther Jang at lcl@seattlecommunitynetwork.org.","title":"Join a Team"},{"location":"community/teams/#join-a-team","text":"As a volunteer-run community network, we are always in need of extra hands. If you're interested in helping out, check out what our teams are working on here! Feel free to have informational meetings with the respective team leads to learn more about how you can help. There's no commitment required and we welcome you to take on as much work as you have the capacity for.","title":"Join a Team"},{"location":"community/teams/#outreach","text":"Our outreach team is responsible for finding new site host partners, finding users, and maintaining communications with our current partners. Message the #outreach channel in Discord and contact Esther Jang to learn more about how you can get involved. This is the perfect team for you if any of the following apply to you: Experience with community organizing Have community connections in the Greater Seattle Area Have cultural humility and experience partnering with marginalized communities Have the ability to translate and/or interpret into non-English languages common in the Seattle area such as Spanish, Vietnamese, Somali, Oromo, Khmer, and more. As of July 2021, the primary objective of the outreach team is to get connected with users for our network sites that fit any of the following criteria: Unemployed Seniors Housing-unstable or houseless Non-English speaking","title":"Outreach"},{"location":"community/teams/#social-media","text":"Our social media team is in charge of our various accounts on Instagram , Facebook , and Twitter . They also develop branding and marketing materials for our various projects. Message the #social-media channel in Discord and contact Firn Tieanklin to learn more about how you can get involved. You should join this team if you have experience in or are interested in practicing any of the following skills/technologies: - Canva - Design - Marketing - Photography/Videography","title":"Social Media"},{"location":"community/teams/#web-development","text":"Our web development team is working on redesigning and developing our new website. Message the #website channel in Discord to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: HTML/CSS Javascript Bootstrap React Redux Web Design (Using Figma)","title":"Web Development"},{"location":"community/teams/#mobile-app-development","text":"Our mobile app development team is currently developing an Android app to record cell network performance metrics during our field tests. Message the #measurement channel in Discord and contact Zhennan Zhou to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Android app development iOS app development Java Object oriented programming Open source development, Git, and GitHub","title":"Mobile App Development"},{"location":"community/teams/#education","text":"Our education team plays a core role in our community networks as they enable our networks to be community-owned and operated. The education team is responsible for developing educational materials, running workshops, and teaching our Digital Steward cohorts. Message the #digital-stewards channel in Discord and contact Esther Jang to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Teaching Curriculum development Computer networks, LTE networks, and community networks Linux Community organizing","title":"Education"},{"location":"community/teams/#fundraising","text":"Our fundraising team is currently setting up a crowdfunding platform to raise money for various expenses that this project requires. Our fundraising team is also working on applying for various community grants and research grants. Message the #funding channel in Discord and contact Esther Jang to learn more about how you can get involved.","title":"Fundraising"},{"location":"community/teams/#accounting-legal","text":"Local Connectivity Lab, the nonprofit organizing that is incubating this project, often runs into accounting and legal challenges. If you are willing to provide pro bono services to benefit the community network, please contact Esther Jang at lcl@seattlecommunitynetwork.org.","title":"Accounting & Legal"},{"location":"community/tech-help/","text":"Community Tech Help There are several ways to get community-based tech support from the SCN community, such as the Help Desk . You can use any of these methods to request Internet service from us, request general technology or computer help, or contact us about any other topic. Join our Discord! The FASTEST way to get support will be to join the #support channel on our Discord , a messaging platform that we use to organize. Follow these steps to join Discord: Join our Discord server via the invite link. You will need to log in or create an account to join, and a moderator will need to assign you a role before you are allowed to join permanently. Install Discord for your computer , Android , or iOS device to stay up-to-date on conversations. When posting to the #support channel, describe your question or problem in as much detail as you can. Someone from the community will most likely respond within a few hours. If you would like to get to know the community, introduce yourself in the #introductions channel! How did you hear about SCN and why are you interested? (More complete instructions can be found here ). Community-Run Help Desk The Seattle Community Network organizes a community-run tech help desk supported by the Black Brilliance Research Project's (BBR's) Digital Stewards Program and the Filipino Community of Seattle (FCS). Our current in-person help desk hours are on Fridays at 3-5 pm starting on 2/18/2022, located in the Filipino Community Village Integrated Learning Center (ILC) . Filipino Community Village Integrated Learning Center address: 5727 37th Ave S, Seattle, WA 98118 Our help desk is best-effort and mainly volunteer-based, so our virtual hours availability may be highly variable. Please check our available hours and sign up for an appointment slot using the calendar link below if you can (or contact us another way if that doesn't work), as it helps the volunteers plan for our time. However, you may also drop in during our scheduled calendar hours without an appointment. Our Help Desk Calendar : You can sign up for an appointment slot for any staffed volunteer hours indicated on the calendar. Phone Number (Voicemail-only except during staffed Community Tech Help hours): (253) 655-7221 You may also send text messages to this number, which will be checked during staffed hours. Inquiries about getting connected to our Internet service can also be sent here. Email address for general Tech Support: support@seattlecommunitynetwork.org Email address for SCN Internet service-related support: help@seattlecommunitynetwork.org Help Desk Volunteers We are actively recruiting more volunteers to help us run the help desk virtually, whenever and wherever that you are available. Join our team by simply signing up on this interest form , we need you! Please let us know if you have additional questions or concerns in the #support channel on our Discord . Documentation As always, please do not hesitate to consult our docs for any information, or submit an issue on the docs site github if there is information missing that you would like to see. Also feel free to message the Discord for the same purpose.","title":"Community Tech Help"},{"location":"community/tech-help/#community-tech-help","text":"There are several ways to get community-based tech support from the SCN community, such as the Help Desk . You can use any of these methods to request Internet service from us, request general technology or computer help, or contact us about any other topic.","title":"Community Tech Help"},{"location":"community/tech-help/#join-our-discord","text":"The FASTEST way to get support will be to join the #support channel on our Discord , a messaging platform that we use to organize.","title":"Join our Discord!"},{"location":"community/tech-help/#follow-these-steps-to-join-discord","text":"Join our Discord server via the invite link. You will need to log in or create an account to join, and a moderator will need to assign you a role before you are allowed to join permanently. Install Discord for your computer , Android , or iOS device to stay up-to-date on conversations. When posting to the #support channel, describe your question or problem in as much detail as you can. Someone from the community will most likely respond within a few hours. If you would like to get to know the community, introduce yourself in the #introductions channel! How did you hear about SCN and why are you interested? (More complete instructions can be found here ).","title":"Follow these steps to join Discord:"},{"location":"community/tech-help/#community-run-help-desk","text":"The Seattle Community Network organizes a community-run tech help desk supported by the Black Brilliance Research Project's (BBR's) Digital Stewards Program and the Filipino Community of Seattle (FCS). Our current in-person help desk hours are on Fridays at 3-5 pm starting on 2/18/2022, located in the Filipino Community Village Integrated Learning Center (ILC) . Filipino Community Village Integrated Learning Center address: 5727 37th Ave S, Seattle, WA 98118 Our help desk is best-effort and mainly volunteer-based, so our virtual hours availability may be highly variable. Please check our available hours and sign up for an appointment slot using the calendar link below if you can (or contact us another way if that doesn't work), as it helps the volunteers plan for our time. However, you may also drop in during our scheduled calendar hours without an appointment. Our Help Desk Calendar : You can sign up for an appointment slot for any staffed volunteer hours indicated on the calendar. Phone Number (Voicemail-only except during staffed Community Tech Help hours): (253) 655-7221 You may also send text messages to this number, which will be checked during staffed hours. Inquiries about getting connected to our Internet service can also be sent here. Email address for general Tech Support: support@seattlecommunitynetwork.org Email address for SCN Internet service-related support: help@seattlecommunitynetwork.org","title":"Community-Run Help Desk"},{"location":"community/tech-help/#help-desk-volunteers","text":"We are actively recruiting more volunteers to help us run the help desk virtually, whenever and wherever that you are available. Join our team by simply signing up on this interest form , we need you! Please let us know if you have additional questions or concerns in the #support channel on our Discord .","title":"Help Desk Volunteers"},{"location":"community/tech-help/#documentation","text":"As always, please do not hesitate to consult our docs for any information, or submit an issue on the docs site github if there is information missing that you would like to see. Also feel free to message the Discord for the same purpose.","title":"Documentation"},{"location":"contribute/contribute/","text":"Contribute to SCN Docs Looking to help? If you wanna share resources and help improve our docs, this page will get you started! Our docs are designed so that anyone can contribute. If this page isn't enough, contact one of us and we'll be able to help you! Our documentation uses MkDocs ReadTheDocs theme (links at the bottom of the page) Editing process To edit this documentation you should: Get your own copy of the repo Modify the documentation in your own repo (for more information see section on Local Development) Submit a pull request Wait for someone to review and accept the request The rest of this page will explain all the details you need to know about the directory structure, markdown, and other quirks for editing this documentation. Make sure to read everything! Markdown files All our documentation is stored in 'Markdown' files so that they can be easily modified and changed without heavy technical knowledge. Markdown Editors A nice and simple online editor is StackEdit which will let you type in markdown and see what it would look like in realtime in split-screen. Another option is HackMD which has the same features as StackEdit but it also allows you to connect to your own GitHub repo and pull/push. This is a nice option if you are uncomfortable with using Git from the command line. Local Development Using MkDocs MkDocs is pretty simple, just install it through pip then you can run mkdocs serve to locally view the website it will generate. Documentation Directory Structure Each directory has a .site file that declares the order each file/folder in that directory will show up. Children pages are implicit in the directory structure Static Files If you need static files for any of your pages, you should put them in the assets folder within the top level docs folder For example, for the cable-crimping page, the images for the tutorial are located in the \"assets/cable-crimping\" folder. These images can then be referenced relatively with the following standard markdown image syntax: ![RJ45 Crimping Tool](../assets/cable-crimping/kit-crimping-tool.jpg)","title":"Contribute to SCN Docs"},{"location":"contribute/contribute/#contribute-to-scn-docs","text":"","title":"Contribute to SCN Docs"},{"location":"contribute/contribute/#looking-to-help","text":"If you wanna share resources and help improve our docs, this page will get you started! Our docs are designed so that anyone can contribute. If this page isn't enough, contact one of us and we'll be able to help you! Our documentation uses MkDocs ReadTheDocs theme (links at the bottom of the page)","title":"Looking to help?"},{"location":"contribute/contribute/#editing-process","text":"To edit this documentation you should: Get your own copy of the repo Modify the documentation in your own repo (for more information see section on Local Development) Submit a pull request Wait for someone to review and accept the request The rest of this page will explain all the details you need to know about the directory structure, markdown, and other quirks for editing this documentation. Make sure to read everything!","title":"Editing process"},{"location":"contribute/contribute/#markdown-files","text":"All our documentation is stored in 'Markdown' files so that they can be easily modified and changed without heavy technical knowledge.","title":"Markdown files"},{"location":"contribute/contribute/#markdown-editors","text":"A nice and simple online editor is StackEdit which will let you type in markdown and see what it would look like in realtime in split-screen. Another option is HackMD which has the same features as StackEdit but it also allows you to connect to your own GitHub repo and pull/push. This is a nice option if you are uncomfortable with using Git from the command line.","title":"Markdown Editors"},{"location":"contribute/contribute/#local-development","text":"","title":"Local Development"},{"location":"contribute/contribute/#using-mkdocs","text":"MkDocs is pretty simple, just install it through pip then you can run mkdocs serve to locally view the website it will generate.","title":"Using MkDocs"},{"location":"contribute/contribute/#documentation-directory-structure","text":"Each directory has a .site file that declares the order each file/folder in that directory will show up. Children pages are implicit in the directory structure","title":"Documentation Directory Structure"},{"location":"contribute/contribute/#static-files","text":"If you need static files for any of your pages, you should put them in the assets folder within the top level docs folder For example, for the cable-crimping page, the images for the tutorial are located in the \"assets/cable-crimping\" folder. These images can then be referenced relatively with the following standard markdown image syntax: ![RJ45 Crimping Tool](../assets/cable-crimping/kit-crimping-tool.jpg)","title":"Static Files"},{"location":"faq/about/","text":"About Seattle Community Network Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. SCN is a project of Local Connectivity Lab, a 501(c)(3) registered non-profit that works to share free or low-cost broadband access in higher-need areas throughout the Puget Sound region, making use of existing network infrastructure such as buildings and fiber-optic cables to extend coverage to more people. As a community network, we rely on the help of local residents such as yourself to maintain and grow the network. Joining us is a great way to become an active member of your own community, make friends, and learn valuable technical skills.","title":"What is the Seattle Community Network?"},{"location":"faq/about/#about-seattle-community-network","text":"Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. SCN is a project of Local Connectivity Lab, a 501(c)(3) registered non-profit that works to share free or low-cost broadband access in higher-need areas throughout the Puget Sound region, making use of existing network infrastructure such as buildings and fiber-optic cables to extend coverage to more people. As a community network, we rely on the help of local residents such as yourself to maintain and grow the network. Joining us is a great way to become an active member of your own community, make friends, and learn valuable technical skills.","title":"About Seattle Community Network"},{"location":"faq/connection/","text":"How do I get Internet from the Seattle Community Network? Eligibility The Seattle Community Network exists to provide free or low-cost internet to low-income and in-need users. We prioritize serving the following groups: low-income families of students unemployed adults (looking for work) majority non-English speaking adults/families seniors Registration To connect to the internet through the Seattle Community Network, you will need to register with us. To register, you can: - Email lcl@seattlecommunitynetwork.org - Contact us by phone at (253) 655-7221 and leaving a voice mail or text. Hardware Once your registration is processed, you will receive the necessary hardware to connect to the network.","title":"How do I get Internet?"},{"location":"faq/connection/#how-do-i-get-internet-from-the-seattle-community-network","text":"","title":"How do I get Internet from the Seattle Community Network?"},{"location":"faq/connection/#eligibility","text":"The Seattle Community Network exists to provide free or low-cost internet to low-income and in-need users. We prioritize serving the following groups: low-income families of students unemployed adults (looking for work) majority non-English speaking adults/families seniors","title":"Eligibility"},{"location":"faq/connection/#registration","text":"To connect to the internet through the Seattle Community Network, you will need to register with us. To register, you can: - Email lcl@seattlecommunitynetwork.org - Contact us by phone at (253) 655-7221 and leaving a voice mail or text.","title":"Registration"},{"location":"faq/connection/#hardware","text":"Once your registration is processed, you will receive the necessary hardware to connect to the network.","title":"Hardware"},{"location":"faq/help/","text":"How can I Help? Volunteer! SCN is run completely by volunteers. There are many ways you can help, and no technology skills are required. We need help with everything from setting up network hardware and developing software to community outreach and fundraising. If you want to help, we can use your talents! First, make sure you get connected with our community . Next, why not Join a Team or Contribute to SCN Docs ?","title":"How can I Help?"},{"location":"faq/help/#how-can-i-help","text":"","title":"How can I Help?"},{"location":"faq/help/#volunteer","text":"SCN is run completely by volunteers. There are many ways you can help, and no technology skills are required. We need help with everything from setting up network hardware and developing software to community outreach and fundraising. If you want to help, we can use your talents! First, make sure you get connected with our community . Next, why not Join a Team or Contribute to SCN Docs ?","title":"Volunteer!"},{"location":"faq/how/","text":"How Does the Seattle Community Network Work? The Seattle Community Network partners with the University of Washington to share free or low-cost internet access with areas of higher need. The Seattle Community Network (SCN) is a wireless Internet access network using 4G LTE and WiFi technologies, providing public access from partner locations such as libraries, schools, businesses, and community centers. The Internet connection at these sites is shared wirelessly to nearby devices using the 4G LTE (cell-phone) data standard, which can be used by certain phones and hotspots (also known as Customer Premises Equipment or CPE). Individual users can connect to this signal using SCN-provided (or other compatible) devices to create a local WiFi network in their home. Some of our installed sites utilize a portion of the University of Washington's internet bandwidth, sharing it out to further neighborhoods via point-to-point wireless links. Some sites use other upstream internet service providers (ISPs) such as Lumen. The network is completely created, managed, and maintained by volunteers with a range of diverse skills in information technology and beyond. All infrastructure is paid for by generous donations from sponsors and the public. Speaking of which, why not volunteer or donate ?","title":"How does SCN Work?"},{"location":"faq/how/#how-does-the-seattle-community-network-work","text":"The Seattle Community Network partners with the University of Washington to share free or low-cost internet access with areas of higher need. The Seattle Community Network (SCN) is a wireless Internet access network using 4G LTE and WiFi technologies, providing public access from partner locations such as libraries, schools, businesses, and community centers. The Internet connection at these sites is shared wirelessly to nearby devices using the 4G LTE (cell-phone) data standard, which can be used by certain phones and hotspots (also known as Customer Premises Equipment or CPE). Individual users can connect to this signal using SCN-provided (or other compatible) devices to create a local WiFi network in their home. Some of our installed sites utilize a portion of the University of Washington's internet bandwidth, sharing it out to further neighborhoods via point-to-point wireless links. Some sites use other upstream internet service providers (ISPs) such as Lumen. The network is completely created, managed, and maintained by volunteers with a range of diverse skills in information technology and beyond. All infrastructure is paid for by generous donations from sponsors and the public. Speaking of which, why not volunteer or donate ?","title":"How Does the Seattle Community Network Work?"},{"location":"faq/site/","text":"About This Website The Seattle Community Network Docs website is the central hub for information about our community and networks. Here, we describe our infrastructure, how to set-up hardware and software, how you can start your own community network, our community rules, and more. This website is maintained by our volunteers, much like the rest of our services. This means you can help us improve it by adding missing information, clarifying confusing points, or even just fixing typos you notice while you\u2019re reading. See Contribute to SCN Docs to learn more about how you can contribute to this website. If you are looking for our main website, it is located at www.seattlecommunitynetwork.org .","title":"What is this site?"},{"location":"faq/site/#about-this-website","text":"The Seattle Community Network Docs website is the central hub for information about our community and networks. Here, we describe our infrastructure, how to set-up hardware and software, how you can start your own community network, our community rules, and more. This website is maintained by our volunteers, much like the rest of our services. This means you can help us improve it by adding missing information, clarifying confusing points, or even just fixing typos you notice while you\u2019re reading. See Contribute to SCN Docs to learn more about how you can contribute to this website. If you are looking for our main website, it is located at www.seattlecommunitynetwork.org .","title":"About This Website"},{"location":"faq/what/","text":"What is a Community Network? \"Community Networks (CNs) are crowd-sourced collaborative networks, developed in a bottom-up fashion by groups of individuals \u2013 i.e. communities \u2013 that design, develop and manage the network infrastructure as a common resource. Importantly, at the centre of CNs and the socio-economic ecosystems they generate lay the communities and their members, who are essential to initiate, maintain and guarantee the success of these connectivity efforts.\" Source: Building Community Network Policies: A Collaborative Governance towards Enabling Frameworks","title":"What is a Community Network?"},{"location":"faq/what/#what-is-a-community-network","text":"\"Community Networks (CNs) are crowd-sourced collaborative networks, developed in a bottom-up fashion by groups of individuals \u2013 i.e. communities \u2013 that design, develop and manage the network infrastructure as a common resource. Importantly, at the centre of CNs and the socio-economic ecosystems they generate lay the communities and their members, who are essential to initiate, maintain and guarantee the success of these connectivity efforts.\" Source: Building Community Network Policies: A Collaborative Governance towards Enabling Frameworks","title":"What is a Community Network?"},{"location":"faq/why/","text":"Why Have a Community Network? Internet access is a foundational component of many aspects of modern life, nearly as important as electricity and water service. Though internet service is generally available in many areas of the United States, there are still areas that are underserved because of a variety of geographic and socio-economic factors, or simply because traditional internet service providers do not find it profitable to install and maintain the necessary infrastructure to serve some areas with adequate internet. Community networks attempt to address this digital divide by connecting underserved communities. Because a community network is created, managed, and maintained by volunteers, it is able to serve areas that may not have other affordable internet options.","title":"Why have a Community Network?"},{"location":"faq/why/#why-have-a-community-network","text":"Internet access is a foundational component of many aspects of modern life, nearly as important as electricity and water service. Though internet service is generally available in many areas of the United States, there are still areas that are underserved because of a variety of geographic and socio-economic factors, or simply because traditional internet service providers do not find it profitable to install and maintain the necessary infrastructure to serve some areas with adequate internet. Community networks attempt to address this digital divide by connecting underserved communities. Because a community network is created, managed, and maintained by volunteers, it is able to serve areas that may not have other affordable internet options.","title":"Why Have a Community Network?"},{"location":"infrastructure/epc-setup/","text":"Step 1: CoLTE/EPC (LTE Core Network) Setup Our core networks use the CoLTE project maintained by the UW ICTD Lab . For information on how to install and configure CoLTE, visit the tutorial we wrote with them!","title":"Step 1. LTE Core Network Setup"},{"location":"infrastructure/epc-setup/#step-1-colteepc-lte-core-network-setup","text":"Our core networks use the CoLTE project maintained by the UW ICTD Lab . For information on how to install and configure CoLTE, visit the tutorial we wrote with them!","title":"Step 1: CoLTE/EPC (LTE Core Network) Setup"},{"location":"infrastructure/hardware/","text":"Our Hardware This page will be an overview of some of the core pieces of hardware that we use to deploy our sites. This page is in development, please contact us at lcl@seattlecommunitynetwork.org if you would like to learn more about the hardware we use. TODO Network Site Equipment Base Station (eNodeB) Baicells Nova 233 3.5GHz 1W Gen2 More info here Panel Antennas (eNodeB) Alpha Wireless, 3.3-3.8GHz, 2x2 MIMO, 18dBi, +/-45\u00b0, 65\u00b0 More info here Core Network Computer (EPC) Qotom Mini PC Q190G4N S07 Key features: - 4 ethernet ports - designed to be run 24/7 - small and quiet - cheap More info here User Access Devices LTE Consumer Premises Equipment (CPE) Baicells Atom OD04 3.5GHz 14dBi More info here Outdoor WiFi Router Mikrotik OmniTIK 5 PoE ac Outdoor router of choice for NYC Mesh, so it has been tried and tested. Good balance of quality and price. More info here Home WiFi Router TP-Link Archer A5 Router More info here CBRS-Compatible Unlocked Smartphone We purchase refurbished Google Pixel 4 smartphones because they are affordable, provide all necessary smartphone features, and are CBRS-compatible. Note that purchasing CBRS-compatible phones can be a logistical challenge. We've experienced trouble purchasing from vendors that send incorrect models of phones that don't support CBRS band and we had to go back and forth. Test your phones before distributing them! Here is one spot to purchase refurbished phones.","title":"Hardware Overview"},{"location":"infrastructure/hardware/#our-hardware","text":"This page will be an overview of some of the core pieces of hardware that we use to deploy our sites. This page is in development, please contact us at lcl@seattlecommunitynetwork.org if you would like to learn more about the hardware we use.","title":"Our Hardware"},{"location":"infrastructure/hardware/#todo","text":"","title":"TODO"},{"location":"infrastructure/hardware/#network-site-equipment","text":"","title":"Network Site Equipment"},{"location":"infrastructure/hardware/#base-station-enodeb","text":"Baicells Nova 233 3.5GHz 1W Gen2 More info here","title":"Base Station (eNodeB)"},{"location":"infrastructure/hardware/#panel-antennas-enodeb","text":"Alpha Wireless, 3.3-3.8GHz, 2x2 MIMO, 18dBi, +/-45\u00b0, 65\u00b0 More info here","title":"Panel Antennas (eNodeB)"},{"location":"infrastructure/hardware/#core-network-computer-epc","text":"Qotom Mini PC Q190G4N S07 Key features: - 4 ethernet ports - designed to be run 24/7 - small and quiet - cheap More info here","title":"Core Network Computer (EPC)"},{"location":"infrastructure/hardware/#user-access-devices","text":"","title":"User Access Devices"},{"location":"infrastructure/hardware/#lte-consumer-premises-equipment-cpe","text":"Baicells Atom OD04 3.5GHz 14dBi More info here","title":"LTE Consumer Premises Equipment (CPE)"},{"location":"infrastructure/hardware/#outdoor-wifi-router","text":"Mikrotik OmniTIK 5 PoE ac Outdoor router of choice for NYC Mesh, so it has been tried and tested. Good balance of quality and price. More info here","title":"Outdoor WiFi Router"},{"location":"infrastructure/hardware/#home-wifi-router","text":"TP-Link Archer A5 Router More info here","title":"Home WiFi Router"},{"location":"infrastructure/hardware/#cbrs-compatible-unlocked-smartphone","text":"We purchase refurbished Google Pixel 4 smartphones because they are affordable, provide all necessary smartphone features, and are CBRS-compatible. Note that purchasing CBRS-compatible phones can be a logistical challenge. We've experienced trouble purchasing from vendors that send incorrect models of phones that don't support CBRS band and we had to go back and forth. Test your phones before distributing them! Here is one spot to purchase refurbished phones.","title":"CBRS-Compatible Unlocked Smartphone"},{"location":"infrastructure/librenms-manager-setup/","text":"LibreNMS Network Manager Configuration Seattle Community Networks uses SNMP to monitor network nodes. LibreNMS is used for Network Management, Dashboard generation and Alerting. LibreNMS Manager Installation: Install LibreNMS Install and Configure LibreNMS on Ubuntu with nginx Network-Specific Configuration: Change active user to librenms: sudo su - librenms Edit /opt/librenms/config.php: '); $config['auth_mechanism'] = \"mysql\"; # default, other options: ldap, http-auth $config['nets'][] = \"10.0.0.0/24\"; # Replace with your Management Network Subdomain $config['rrd_purge'] = 0; $config['enable_billing'] = 1; $config['show_services'] = 1; As user 'librenms', run /opt/librenms/snmp-scan.php, to scan the configured network for snmp hosts Adding Baicells OS configuration to LibreNMS As user 'librenms' on the librenms server, create the following files and update their contents accordingly: * For OS detection, ~librenms/includes/definitions/rts.yaml: os: rts text: 'Baicells RTS' type: network icon: rts over: - { graph: device_bits, text: 'Device Traffic' } - { graph: device_processor, text: 'CPU Usage' } - { graph: device_mempool, text: 'Memory Usage' } discovery: - sysDescr: - 'CELL' For defining custom RTS OS sensors, ~librenms/includes/definitions/discovery/rts.yaml: mib: BAICELLS-MIB modules: os: hardware: BAICELLS-MIB::hardwareVersion.0 serial: BAICELLS-MIB::sn.0 version: BAICELLS-MIB::softwareVersion.0 sensors: count: data: - oid: ulThroughput num_oid: '.1.3.6.1.4.1.53058.190.7.{{ $index }}' descr: 'Upload Throughput' group: 'Throughput' index: 'ulthroughput.{{ $index }}' - oid: dlThroughput num_oid: '.1.3.6.1.4.1.53058.190.8.{{ $index }}' descr: 'Download Throughput' group: 'Throughput' index: 'dlThroughput.{{ $index }}' - oid: ulPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.9.{{ $index }}' descr: 'Upload PRB Utilization' group: 'Utilization' index: 'ulPrbUtilization{{ $index }}' - oid: dlPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.10.{{ $index }}' descr: 'Download PRB Utilization' group: 'Utilization' index: 'dlPrbUtilization.{{ $index }}' frequency: data: - oid: carrierBwMhz num_oid: '.1.3.6.1.4.1.53058.100.7.{{ $index }}' divisor: 5 descr: 'Carrier Bandwidth' index: 'carrierBwMhz.{{ $index }}' percent: data: - oid: eRABEstablishSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.3.{{ $index }}' descr: 'ERAB Establishment Success Rate' group: 'LTE' index: 'eRABEstablishSuccessRate.{{ $index }}' - oid: hoSuccInterEnbS1Rate num_oid: '.1.3.6.1.4.1.53058.190.4.{{ $index }}' descr: 'Inter MME S1 Handover Success Rate' group: 'LTE' index: 'heSuccInterEnbS1Rate.{{ $index }}' - oid: hoSuccInterEnbRate num_oid: '.1.3.6.1.4.1.53058.190.5.{{ $index }}' descr: 'Inter MME Handover Success Rate' group: 'LTE' index: 'hoSuccInterEnbRate.{{ $index }}' - oid: rrcBuildSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.6.{{ $index }}' descr: 'RRC Build Success Rate' group: 'LTE' index: 'rrcBuildSuccessRate.{{ $index }}' For defining a custom OS class to use Wireless sensors, ~librenms/LibreNMS/OS/Rts.php (note: pay attention to capitalization) getDeviceId(), $oid, 'rts', 1, 'UE Connections') ); } } A nice looking logo, ~librenms/html/images/os/rts.png Download an example Baicells Logo Here Download the baicells mib from this link , and save it to ~librenms/mibs/BAICELLS-MIB (note: no file extension)","title":"Network Monitoring 1. LibreNMS Network Manager Configuration"},{"location":"infrastructure/librenms-manager-setup/#librenms-network-manager-configuration","text":"Seattle Community Networks uses SNMP to monitor network nodes. LibreNMS is used for Network Management, Dashboard generation and Alerting.","title":"LibreNMS Network Manager Configuration"},{"location":"infrastructure/librenms-manager-setup/#librenms-manager-installation","text":"Install LibreNMS Install and Configure LibreNMS on Ubuntu with nginx","title":"LibreNMS Manager Installation:"},{"location":"infrastructure/librenms-manager-setup/#network-specific-configuration","text":"Change active user to librenms: sudo su - librenms Edit /opt/librenms/config.php: '); $config['auth_mechanism'] = \"mysql\"; # default, other options: ldap, http-auth $config['nets'][] = \"10.0.0.0/24\"; # Replace with your Management Network Subdomain $config['rrd_purge'] = 0; $config['enable_billing'] = 1; $config['show_services'] = 1; As user 'librenms', run /opt/librenms/snmp-scan.php, to scan the configured network for snmp hosts","title":"Network-Specific Configuration:"},{"location":"infrastructure/librenms-manager-setup/#adding-baicells-os-configuration-to-librenms","text":"As user 'librenms' on the librenms server, create the following files and update their contents accordingly: * For OS detection, ~librenms/includes/definitions/rts.yaml: os: rts text: 'Baicells RTS' type: network icon: rts over: - { graph: device_bits, text: 'Device Traffic' } - { graph: device_processor, text: 'CPU Usage' } - { graph: device_mempool, text: 'Memory Usage' } discovery: - sysDescr: - 'CELL' For defining custom RTS OS sensors, ~librenms/includes/definitions/discovery/rts.yaml: mib: BAICELLS-MIB modules: os: hardware: BAICELLS-MIB::hardwareVersion.0 serial: BAICELLS-MIB::sn.0 version: BAICELLS-MIB::softwareVersion.0 sensors: count: data: - oid: ulThroughput num_oid: '.1.3.6.1.4.1.53058.190.7.{{ $index }}' descr: 'Upload Throughput' group: 'Throughput' index: 'ulthroughput.{{ $index }}' - oid: dlThroughput num_oid: '.1.3.6.1.4.1.53058.190.8.{{ $index }}' descr: 'Download Throughput' group: 'Throughput' index: 'dlThroughput.{{ $index }}' - oid: ulPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.9.{{ $index }}' descr: 'Upload PRB Utilization' group: 'Utilization' index: 'ulPrbUtilization{{ $index }}' - oid: dlPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.10.{{ $index }}' descr: 'Download PRB Utilization' group: 'Utilization' index: 'dlPrbUtilization.{{ $index }}' frequency: data: - oid: carrierBwMhz num_oid: '.1.3.6.1.4.1.53058.100.7.{{ $index }}' divisor: 5 descr: 'Carrier Bandwidth' index: 'carrierBwMhz.{{ $index }}' percent: data: - oid: eRABEstablishSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.3.{{ $index }}' descr: 'ERAB Establishment Success Rate' group: 'LTE' index: 'eRABEstablishSuccessRate.{{ $index }}' - oid: hoSuccInterEnbS1Rate num_oid: '.1.3.6.1.4.1.53058.190.4.{{ $index }}' descr: 'Inter MME S1 Handover Success Rate' group: 'LTE' index: 'heSuccInterEnbS1Rate.{{ $index }}' - oid: hoSuccInterEnbRate num_oid: '.1.3.6.1.4.1.53058.190.5.{{ $index }}' descr: 'Inter MME Handover Success Rate' group: 'LTE' index: 'hoSuccInterEnbRate.{{ $index }}' - oid: rrcBuildSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.6.{{ $index }}' descr: 'RRC Build Success Rate' group: 'LTE' index: 'rrcBuildSuccessRate.{{ $index }}' For defining a custom OS class to use Wireless sensors, ~librenms/LibreNMS/OS/Rts.php (note: pay attention to capitalization) getDeviceId(), $oid, 'rts', 1, 'UE Connections') ); } } A nice looking logo, ~librenms/html/images/os/rts.png Download an example Baicells Logo Here Download the baicells mib from this link , and save it to ~librenms/mibs/BAICELLS-MIB (note: no file extension)","title":"Adding Baicells OS configuration to LibreNMS"},{"location":"infrastructure/librenms-setup/","text":"LibreNMS Agent Configuration Adding a New Node to LibreNMS Both the eNodeB and the ePC must be configured individually in order for them to report statistics to the SNMP Manager. Since the eNodeB is not directly accessible from the management VPN, we configure an SNMP proxy on the ePC to pass SNMP statistics to the Management host. ePC SNMP Configuration Install snmpd to the ePC node: $ sudo apt install snmpd Modify /etc/snmp/snmpd.conf: sysLocation sysContact lcl@seattlecommunitynetwork.org sysServices 72 master agentx agentAddress udp:161 com2sec readonly com2sec -Cn ctx_baicells readonly enodeb group readonlygroup v2c readonly view all included .1 access readonlygroup \"\" v2c noauth exact all none none access readonlygroup ctx_baicells v2c noauth prefix all none none proxy -Cn ctx_baicells -v 2c -c private 192.168.151.1 .1.3 This configuration allows us to access SNMP data on the EPC with the standard community string (refer to internal standards documentation). but will proxy the Baicells SNMP data when we send the community string \u2018enodeb\u2019 Update the snmpd service file to automatically restart snmpd on crash: Edit /lib/systemd/system/snmpd.service, modify the 'ExecStart' line, and add the 'ExecReload', 'Restart', and 'RestartSec' lines: [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -LO2w -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target Enable and restart snmpd: Sudo systemctl daemon-reload sudo systemctl enable snmpd sudo systemctl restart snmpd Baicells SNMP configuration Log into the Baicells configuration console: https:// From the left menu, select System Select SNMP Under \u2018SNMP Switch,\u2019 select \u2018Enable\u2019 Configure the following options: Community String: private Contact: lcl@seattlecommunitynetwork.org Location: \\ (String should not have any spaces) Source: Any Adding the Node to LibreNMS If the ePC is running, librenms should be able to auto-discover it. Run this command from a shell on the management host: sudo -u librenms lnms scan LibreNMS should print a status message that it was able to add a new device. When first discovered, the ePC will show up generically as it\u2019s ip address. Edit the hostname, but clicking \u2018Edit Device\u2019 (gear icon): Click the red pencil icon, and change the ip address to the hostname Fill \u2018Overwrite IP\u2019 with the ePC IP address Note: If the IP is not changed to the hostname, you will not be able to add the eNodeB by it\u2019s IP address The Baicells eNB needs to be added manually: From LibreNMS, select Devices and click \u201cAdd Device\u201d Add a new device, with the following configurations: Hostname: Community: \u2018enodeb\u2019 Force Add: On Note: If you receive an error message stating that a device with the specified IP already exists, make sure that you have successfully changed the eNodeB\u2019s hostname per the previous step. Once the device is added, click the \u2018Edit Device\u2019 icon (gear icon) and update the following values: Display name: \\ Overwrite device contact: lcl@seattlecommunitynetwork.org Other helpful notes: Baicells eNB config guide How to SSH into Baicells eNB: SSH using port 27149 (username same as normal web-based login) Convert the MAC address of this eNB to link local address: http://www.sput.nl/internet/ipv6/ll-mac.html","title":"Network Monitoring 2. LibreNMS Agent Configuration"},{"location":"infrastructure/librenms-setup/#librenms-agent-configuration","text":"","title":"LibreNMS Agent Configuration"},{"location":"infrastructure/librenms-setup/#adding-a-new-node-to-librenms","text":"Both the eNodeB and the ePC must be configured individually in order for them to report statistics to the SNMP Manager. Since the eNodeB is not directly accessible from the management VPN, we configure an SNMP proxy on the ePC to pass SNMP statistics to the Management host.","title":"Adding a New Node to LibreNMS"},{"location":"infrastructure/librenms-setup/#epc-snmp-configuration","text":"Install snmpd to the ePC node: $ sudo apt install snmpd Modify /etc/snmp/snmpd.conf: sysLocation sysContact lcl@seattlecommunitynetwork.org sysServices 72 master agentx agentAddress udp:161 com2sec readonly com2sec -Cn ctx_baicells readonly enodeb group readonlygroup v2c readonly view all included .1 access readonlygroup \"\" v2c noauth exact all none none access readonlygroup ctx_baicells v2c noauth prefix all none none proxy -Cn ctx_baicells -v 2c -c private 192.168.151.1 .1.3 This configuration allows us to access SNMP data on the EPC with the standard community string (refer to internal standards documentation). but will proxy the Baicells SNMP data when we send the community string \u2018enodeb\u2019 Update the snmpd service file to automatically restart snmpd on crash: Edit /lib/systemd/system/snmpd.service, modify the 'ExecStart' line, and add the 'ExecReload', 'Restart', and 'RestartSec' lines: [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -LO2w -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target Enable and restart snmpd: Sudo systemctl daemon-reload sudo systemctl enable snmpd sudo systemctl restart snmpd","title":"ePC SNMP Configuration"},{"location":"infrastructure/librenms-setup/#baicells-snmp-configuration","text":"Log into the Baicells configuration console: https:// From the left menu, select System Select SNMP Under \u2018SNMP Switch,\u2019 select \u2018Enable\u2019 Configure the following options: Community String: private Contact: lcl@seattlecommunitynetwork.org Location: \\ (String should not have any spaces) Source: Any","title":"Baicells SNMP configuration"},{"location":"infrastructure/librenms-setup/#adding-the-node-to-librenms","text":"If the ePC is running, librenms should be able to auto-discover it. Run this command from a shell on the management host: sudo -u librenms lnms scan LibreNMS should print a status message that it was able to add a new device. When first discovered, the ePC will show up generically as it\u2019s ip address. Edit the hostname, but clicking \u2018Edit Device\u2019 (gear icon): Click the red pencil icon, and change the ip address to the hostname Fill \u2018Overwrite IP\u2019 with the ePC IP address Note: If the IP is not changed to the hostname, you will not be able to add the eNodeB by it\u2019s IP address The Baicells eNB needs to be added manually: From LibreNMS, select Devices and click \u201cAdd Device\u201d Add a new device, with the following configurations: Hostname: Community: \u2018enodeb\u2019 Force Add: On Note: If you receive an error message stating that a device with the specified IP already exists, make sure that you have successfully changed the eNodeB\u2019s hostname per the previous step. Once the device is added, click the \u2018Edit Device\u2019 icon (gear icon) and update the following values: Display name: \\ Overwrite device contact: lcl@seattlecommunitynetwork.org","title":"Adding the Node to LibreNMS"},{"location":"infrastructure/librenms-setup/#other-helpful-notes","text":"Baicells eNB config guide How to SSH into Baicells eNB: SSH using port 27149 (username same as normal web-based login) Convert the MAC address of this eNB to link local address: http://www.sput.nl/internet/ipv6/ll-mac.html","title":"Other helpful notes:"},{"location":"infrastructure/peering/","text":"Public ASN Peering Local Connectivity Lab operates AS54429 Our peering Policy is Yes Please contact us to peer with our network. Note this network is our public ASN, not the Seattle Community Network itself. If you would like to join the network visit our connect page. Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. Learn more on our FAQ . Peering Policy Local Connectivity Lab has an open peering policy. We have no requirements in terms of traffic, size, support/SLA, etc. We operate both IPv4 and IPv6. Peering via both protocols is appreciated. Locations Building Address Ports Westin 2001 6th Avenue, Seattle, WA 1G / 10G Exchanges Exchange City IPv4 IPv6 ASNs Routes Speed Seattle Internet Exchange (SIX) Seattle, WA 206.81.81.150 2001:504:16::d49d 336 ~192K 10G Peering Data ASN: 54429 Peering Contact: tech@seattlecommunitynetwork.org PeerDB Page: https://as54429.peeringdb.com As we are a non-profit, please consider providing as many routes as possible, including upstream or other routes.","title":"Public ASN Peering"},{"location":"infrastructure/peering/#public-asn-peering","text":"","title":"Public ASN Peering"},{"location":"infrastructure/peering/#local-connectivity-lab-operates-as54429","text":"","title":"Local Connectivity Lab operates AS54429"},{"location":"infrastructure/peering/#our-peering-policy-is-yes","text":"Please contact us to peer with our network. Note this network is our public ASN, not the Seattle Community Network itself. If you would like to join the network visit our connect page. Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. Learn more on our FAQ .","title":"Our peering Policy is Yes"},{"location":"infrastructure/peering/#peering-policy","text":"Local Connectivity Lab has an open peering policy. We have no requirements in terms of traffic, size, support/SLA, etc. We operate both IPv4 and IPv6. Peering via both protocols is appreciated.","title":"Peering Policy"},{"location":"infrastructure/peering/#locations","text":"Building Address Ports Westin 2001 6th Avenue, Seattle, WA 1G / 10G","title":"Locations"},{"location":"infrastructure/peering/#exchanges","text":"Exchange City IPv4 IPv6 ASNs Routes Speed Seattle Internet Exchange (SIX) Seattle, WA 206.81.81.150 2001:504:16::d49d 336 ~192K 10G","title":"Exchanges"},{"location":"infrastructure/peering/#peering-data","text":"ASN: 54429 Peering Contact: tech@seattlecommunitynetwork.org PeerDB Page: https://as54429.peeringdb.com As we are a non-profit, please consider providing as many routes as possible, including upstream or other routes.","title":"Peering Data"},{"location":"infrastructure/proxmox-vaultwarden-deployment/","text":"Deployed by: Esther Jang, Paul Phillion, Rudra Singh Section 1: What is Proxmox? Proxmox VE (Virtual Environment) is an open-source server management platform designed to deploy and manage virtual machines (VMs) and containers. It integrates KVM hypervisor and LXC containers, enabling users to manage virtual infrastructure through a web-based interface. Section 2: Access Requirements for Proxmox VE at Seattle Community Network To submit a request for a SCN self-hosted Proxmox VM on our private cloud, please fill out this form . If you are working on a project for SCN and need access to the Proxmox VE, please continue reading. Next, you will need access to the OpenVPN. Proxmox VE can only be accessed on the VPN. Specific details can be obtained from the SCN discord. Once connected to the VPN, a specific IP will be provided for you to access the Proxmox VE, where you can input your credentials. Section 3: Setting up your VM Install SSH Install Keys Test SSH CLI Section 4: SSH Troubleshooting Please let the SCN discord know if you have trouble SSH'ing in. A useful command during setup was sudo ufw status . If it is active, use ufw disable . The expected status should be inactive. If that still doesn\u2019t work, try restarting the VM from the Proxmox VE. Section 5: Beginning Deployment: Vaultwarden docker pull vaultwarden/server:latest docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest Section 6: Docker Compose Create a Docker Compose file: version: \"3\" services: vaultwarden: container_name: vaultwarden hostname: vaultwarden9 ports: - \"127.0.0.1:8080:80\" environment: - LOG_FILE=/log/access.log - LOG_LEVEL=info - EXTENDED_LOGGING=true image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/vw-data:/data - /var/log/vw:/log To start and run your container application in detached mode, use: docker-compose up -d docker-compose start docker-compose stop docker-compose restart Section 7: Azure DNS For this deployment, we're utilizing a public IP address. This address must be configured within Azure DNS to point to our chosen domain name. Navigate to Home - Microsoft Azure with your account. Open \u201cDNS zones\u201d. If you were using a private IP, you would use \u201cPrivate DNS zones\u201d. We will be creating a subdomain under seattlecommunitynetwork.org. Click on that, and under DNS management, click recordsets, and click add. Insert the beginning of the subdomain name, which in our case is \u201cvaultwarden\u201d. Below, under IP address, insert your IP, and create your new subdomain. Section 8: Enabling Nginx sudo apt update sudo apt install nginx sudo systemctl enable nginx sudo systemctl start nginx Next, go to /etc/nginx/sites-enabled/default . Delete everything inside default and paste this: # The `upstream` directives ensure that you have a http/1.1 connection # This enables the keepalive option and better performance # # Define the server IP and ports here. upstream vaultwarden-default { zone vaultwarden-default 64k; server 127.0.0.1:8080; keepalive 2; } # Needed to support websocket connections # See: https://nginx.org/en/docs/http/websocket.html # Instead of \"close\" as stated in the above link we send an empty value. # Else all keepalive connections will not work. map $http_upgrade $connection_upgrade { default upgrade; '' \"\"; } # Redirect HTTP to HTTPS server { listen 80; listen [::]:80; server_name vaultwarden.seattlecommunitynetwork.org; if ($host = vaultwarden.seattlecommunitynetwork.org) { return 301 https://$host$request_uri; } return 404; } server { # For older versions of nginx appened http2 to the listen line after ssl and remove `http2 on` listen 443 ssl; listen [::]:443 ssl; # http2 on; server_name vaultwarden.seattlecommunitynetwork.org; # Specify SSL Config when needed ssl_certificate /etc/path...; ssl_certificate_key /etc/path...; ssl_trusted_certificate /etc/path...; client_max_body_size 525M; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://vaultwarden-default; } # Optionally add extra authentication besides the ADMIN_TOKEN # Remove the comments below `#` and create the htpasswd_file to have it active # #location /admin { # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/ #auth_basic \"Administrator's Area\"; #3auth_basic_user_file /path/to/htpasswd_file; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #proxy_pass http://vaultwarden-default; } } Section 9: Obtain SSL Certificates sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d vaultwarden.seattlecommunitynetwork.org Certbot will modify your Nginx configuration to handle HTTPS and redirect from HTTP to HTTPS. Ensure that you copy the file paths provided at the conclusion of the certbot process into the default nginx configuration file, replacing the corresponding comments with these paths. Section 10: Ensure Everything is Running sudo systemctl status nginx Section 11: Additional Features Enabling admin panel: Go back to /etc/nginx/sites-enabled/default and uncomment the admin section at the bottom. Follow directions at Nginx Admin Guide to encrypt your admin password as a .env file (preferably using argon CLI). Once done, make sure you create a .env file in the directory where the compose file is with VAULTWARDEN_ADMIN_TOKEN=[insert your hashed admin token] . Then in your compose, add these two lines under environment: - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} - DOMAIN=https://vaultwarden.seattlecommunitynetwork.org Restart the container and try logging into https://vaultwarden.seattlecommunitynetwork.org/admin . Once logged in, SMTP and 2FA enabling settings can be configured on the home page. Section 12: Data Backup Enabling backups for Vaultwarden is a simple process. Please review the attached backup bash script, which facilitates the transfer of Vaultwarden data to another virtual machine. Additionally, there is a cleanup bash script designed to retain only the most recent file in the other VM, deleting all others. Feel free to modify the scripts as necessary to suit your specific requirements. Backup script: #!/bin/bash docker-compose down datestamp=$(date +%m-%d-%Y) zip -9 -r /home/scn/backups/${datestamp}.zip /opt/vw-data* scp -i ~/.ssh-comm/id_rsa /home/scn/backups/${datestamp}.zip azureuser@[IP address]:~/backups/ docker-compose up -d Cleanup Script: #!/bin/bash # Define the directory containing backup files backup_dir=~/backups # Go to the backup directory cd \"$backup_dir\" || exit # Find and delete older backup files (excluding the latest day) find . -type f -name '*.zip' ! -mtime -1 -exec rm {} + # Exit exit 0 Section 13: Using the Backup To restore a data backup to the original virtual machine, simply unzip the file and delete the existing contents of /opt/vw-data . Then, transfer the contents of your zip file into this directory. Perform a quick restart of the container, and you will have successfully restored the version of the backup you selected.","title":"Proxmox Deployment Guide - Vaultwarden"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#deployed-by-esther-jang-paul-phillion-rudra-singh","text":"","title":"Deployed by: Esther Jang, Paul Phillion, Rudra Singh"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-1-what-is-proxmox","text":"Proxmox VE (Virtual Environment) is an open-source server management platform designed to deploy and manage virtual machines (VMs) and containers. It integrates KVM hypervisor and LXC containers, enabling users to manage virtual infrastructure through a web-based interface.","title":"Section 1: What is Proxmox?"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-2-access-requirements-for-proxmox-ve-at-seattle-community-network","text":"To submit a request for a SCN self-hosted Proxmox VM on our private cloud, please fill out this form . If you are working on a project for SCN and need access to the Proxmox VE, please continue reading. Next, you will need access to the OpenVPN. Proxmox VE can only be accessed on the VPN. Specific details can be obtained from the SCN discord. Once connected to the VPN, a specific IP will be provided for you to access the Proxmox VE, where you can input your credentials.","title":"Section 2: Access Requirements for Proxmox VE at Seattle Community Network"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-3-setting-up-your-vm","text":"","title":"Section 3: Setting up your VM"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#install-ssh","text":"","title":"Install SSH"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#install-keys","text":"","title":"Install Keys"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#test-ssh-cli","text":"","title":"Test SSH CLI"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-4-ssh-troubleshooting","text":"Please let the SCN discord know if you have trouble SSH'ing in. A useful command during setup was sudo ufw status . If it is active, use ufw disable . The expected status should be inactive. If that still doesn\u2019t work, try restarting the VM from the Proxmox VE.","title":"Section 4: SSH Troubleshooting"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-5-beginning-deployment-vaultwarden","text":"docker pull vaultwarden/server:latest docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest","title":"Section 5: Beginning Deployment: Vaultwarden"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-6-docker-compose","text":"Create a Docker Compose file: version: \"3\" services: vaultwarden: container_name: vaultwarden hostname: vaultwarden9 ports: - \"127.0.0.1:8080:80\" environment: - LOG_FILE=/log/access.log - LOG_LEVEL=info - EXTENDED_LOGGING=true image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/vw-data:/data - /var/log/vw:/log To start and run your container application in detached mode, use: docker-compose up -d docker-compose start docker-compose stop docker-compose restart","title":"Section 6: Docker Compose"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-7-azure-dns","text":"For this deployment, we're utilizing a public IP address. This address must be configured within Azure DNS to point to our chosen domain name. Navigate to Home - Microsoft Azure with your account. Open \u201cDNS zones\u201d. If you were using a private IP, you would use \u201cPrivate DNS zones\u201d. We will be creating a subdomain under seattlecommunitynetwork.org. Click on that, and under DNS management, click recordsets, and click add. Insert the beginning of the subdomain name, which in our case is \u201cvaultwarden\u201d. Below, under IP address, insert your IP, and create your new subdomain.","title":"Section 7: Azure DNS"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-8-enabling-nginx","text":"sudo apt update sudo apt install nginx sudo systemctl enable nginx sudo systemctl start nginx Next, go to /etc/nginx/sites-enabled/default . Delete everything inside default and paste this: # The `upstream` directives ensure that you have a http/1.1 connection # This enables the keepalive option and better performance # # Define the server IP and ports here. upstream vaultwarden-default { zone vaultwarden-default 64k; server 127.0.0.1:8080; keepalive 2; } # Needed to support websocket connections # See: https://nginx.org/en/docs/http/websocket.html # Instead of \"close\" as stated in the above link we send an empty value. # Else all keepalive connections will not work. map $http_upgrade $connection_upgrade { default upgrade; '' \"\"; } # Redirect HTTP to HTTPS server { listen 80; listen [::]:80; server_name vaultwarden.seattlecommunitynetwork.org; if ($host = vaultwarden.seattlecommunitynetwork.org) { return 301 https://$host$request_uri; } return 404; } server { # For older versions of nginx appened http2 to the listen line after ssl and remove `http2 on` listen 443 ssl; listen [::]:443 ssl; # http2 on; server_name vaultwarden.seattlecommunitynetwork.org; # Specify SSL Config when needed ssl_certificate /etc/path...; ssl_certificate_key /etc/path...; ssl_trusted_certificate /etc/path...; client_max_body_size 525M; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://vaultwarden-default; } # Optionally add extra authentication besides the ADMIN_TOKEN # Remove the comments below `#` and create the htpasswd_file to have it active # #location /admin { # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/ #auth_basic \"Administrator's Area\"; #3auth_basic_user_file /path/to/htpasswd_file; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #proxy_pass http://vaultwarden-default; } }","title":"Section 8: Enabling Nginx"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-9-obtain-ssl-certificates","text":"sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d vaultwarden.seattlecommunitynetwork.org Certbot will modify your Nginx configuration to handle HTTPS and redirect from HTTP to HTTPS. Ensure that you copy the file paths provided at the conclusion of the certbot process into the default nginx configuration file, replacing the corresponding comments with these paths.","title":"Section 9: Obtain SSL Certificates"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-10-ensure-everything-is-running","text":"sudo systemctl status nginx","title":"Section 10: Ensure Everything is Running"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-11-additional-features","text":"Enabling admin panel: Go back to /etc/nginx/sites-enabled/default and uncomment the admin section at the bottom. Follow directions at Nginx Admin Guide to encrypt your admin password as a .env file (preferably using argon CLI). Once done, make sure you create a .env file in the directory where the compose file is with VAULTWARDEN_ADMIN_TOKEN=[insert your hashed admin token] . Then in your compose, add these two lines under environment: - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} - DOMAIN=https://vaultwarden.seattlecommunitynetwork.org Restart the container and try logging into https://vaultwarden.seattlecommunitynetwork.org/admin . Once logged in, SMTP and 2FA enabling settings can be configured on the home page.","title":"Section 11: Additional Features"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-12-data-backup","text":"Enabling backups for Vaultwarden is a simple process. Please review the attached backup bash script, which facilitates the transfer of Vaultwarden data to another virtual machine. Additionally, there is a cleanup bash script designed to retain only the most recent file in the other VM, deleting all others. Feel free to modify the scripts as necessary to suit your specific requirements. Backup script: #!/bin/bash docker-compose down datestamp=$(date +%m-%d-%Y) zip -9 -r /home/scn/backups/${datestamp}.zip /opt/vw-data* scp -i ~/.ssh-comm/id_rsa /home/scn/backups/${datestamp}.zip azureuser@[IP address]:~/backups/ docker-compose up -d Cleanup Script: #!/bin/bash # Define the directory containing backup files backup_dir=~/backups # Go to the backup directory cd \"$backup_dir\" || exit # Find and delete older backup files (excluding the latest day) find . -type f -name '*.zip' ! -mtime -1 -exec rm {} + # Exit exit 0","title":"Section 12: Data Backup"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-13-using-the-backup","text":"To restore a data backup to the original virtual machine, simply unzip the file and delete the existing contents of /opt/vw-data . Then, transfer the contents of your zip file into this directory. Perform a quick restart of the container, and you will have successfully restored the version of the backup you selected.","title":"Section 13: Using the Backup"},{"location":"infrastructure/sas-setup/","text":"Step 2: eNodeB and SAS Setup Introduction Despite CBRS being a relatively open frequency band, the processes for spectrum access are still somewhat opaque and require significant capital investment and/or ISP-level resources to set up. To clarify this process, here\u2019s a step by step walkthrough tutorial of the setup of a Baicells eNodeB (eNB) base station running in the Citizen\u2019s Broadband Radio Service (CBRS) spectrum band (or band 48). Before following this tutorial, you should have completed the setup of a LTE Evolved Packet Core (EPC) to control your eNB, for which the setup of an open source version based on open5gs is outlined in this tutorial . I. Get set up with a Spectrum Access System (SAS) A. Why get set up with a SAS? Current FCC regulations require all CBRS equipment (called a CBSD) to be registered on a Spectrum Access System (SAS) that coordinates all spectrum assignments and ensures that no transmissions interfere with each other. This will likely require a commercial agreement with a SAS provider such as Google, Federated Wireless, etc. This tutorial uses the Google SAS. B. CPI License At least one member of your team will require \u201cCertified Professional Installer\u201d (CPI) training and license in order to hold legal responsibility for and sign off on device installations. Most SAS providers will offer training at about $500 for both an online training course and the certification exam. If you aren\u2019t able to get someone on your team certified, be sure to collaborate with a CPI! Feel free to contact us at the Local Connectivity Lab if you need support for your community project in this regard, and we can figure out what is feasible. The following are some links and helpful notes about this process: * https://wifidevan.wordpress.com/cbrs-certified-professional-installer-cpi-study-notes/ * https://alliancecorporation.ca/webinars/webinars-webinars/cbrs-for-beginners-part-2-by-commscope/ * https://cbrs.wirelessinnovation.org/acronyms C. SAS Pricing Agreements For Google, the price options provided us in summer 2020 were: Fixed Wireless SAS services are billed per link/household so you pay for each CPE (Customer Premises Equipment) CBSD registered with SAS. CBSDs that operate as base stations are free of charge. Price Per Customer Link $2.25/month. Mobility/Private LTE (price is based on CBSD categoris) Category A CBSD max transmit capability: 30 dBm/10 MHz = 20 dBm/MHz or \u201c1 Watt\u201d mounted under 6m Height Above Average Terrain measured 3-16 km away from site $2.67/month Category B CBSD max transmit capability: Maximum EIRP of 47 dBm/10 MHz = 37 dBm/MHz or \u201c50 Watt\" $13.33/month. D. SAS Registration CBSDs must register their transmit capabilities with the SAS using either the \u201cone-step\u201d or \u201cmulti-step\u201d process. The one-step process requires you to input all installation parameters and sign them with the CPI certificate all on the base station itself, or via a cloud domain proxy such as used by Baicells. Not all base stations support this and the interfaces for doing so might vary widely, so \u201cmulti-step\u201d is typically recommended. II. Register device in SAS portal This tutorial will be walking through steps following the specifics of the Google SAS portal interface, but the steps should be generalizable to other SAS portals. A. Once you have an account on an SAS service, register your devices on their portal or dashboard. The Google SAS portal can be found at: https://wirelessconnectivity.google.com/sas/ B. Our Setup Our test setup in the lab includes: 1W Baicells Nova 233 base station in the CBRS band mounted on the 6th floor balcony of our UW computer science building. Alpha Wireless 18 dBi-gain panel antenna with a beamwidth of 65 degrees (model AW3014-T4), mounted straight ahead and not tilted down. C. Example Configuration An example configuration for this setup is shown below. The configuration screen is a right-hand sidebar next to the map view, hence the unwieldy aspect ratio. Explanation of parameters: CBSD Category (A or B): Defined by rules in Section I.C above User ID Specified by the SAS provider when you register FCC ID and Serial Number: Both the radio and antenna model must be pre-authorized for use with CBRS by the FCC. The FCC ID is used to identify this approved device type. The serial number specifies the exact device identity. Both can usually be found on the outside of the device (circled in image below). Beamforming Gain, Beamwidth Based on antenna specs in II.B EIRP Effective Isotropic Radiated Power of your system including both the base station radio and antenna. For a Cat B CBSD, this must be 46 dBm/10 MHz=36 dBm/MHz or lower. Calculate this value by adding the max transmit power (actually power density per MHz) of the base station, in our case 28 dBm, to the antenna beamforming gain, in our case 18 dBi; 28+18=36 dBm/MHz. For the units requested by the Google interface, add 10 to this value to specify power per 10 MHz instead of per MHz. Height Specified in terms of height Above Ground Level (AGL) which you can measure using a rangefinder/ measuring tape/ building plan, or in height Above Mean Sea Level (AMSL). Not in terms of HAAT as in the Cat A/B definition. Must be accurate to within 3 m. Azimuth Refers to the compass heading/ direction that the antenna is pointing (set this to 0 for an omnidirectional antenna). This FCC tool is extremely helpful for calculating the azimuth based on the antenna\u2019s gps location and that of a structure you are pointing it at. You can get these GPS coordinates via Google Maps or Google Earth. Air Interface E_UTRA is the LTE radio standard used by our Baicells box. The only \u201csupported spec\u201d currently available for Baicells is FFS (according to a forum post, linked here). Location: In the Google interface, set the site location in GPS coordinates under the tab labeled with the map pin icon. (not shown) Parameters under \"CBSD Info\" Call Sign As far as I can tell, this can be any reasonable alphanumeric string as long as it is unique and matches the value of the \u201ccall sign\u201d parameter as sent over by the eNB or domain proxy. You will set this in the SAS interface as well as either the eNB or Baicells Cloud Core (they all need to match). Others These should match the settings with the same name on the eNB\u2019s local management portal, shown on the \u201cBasic Info\u201d page in section IV.A below. D. CPI Signature When the parameters are all filled out, click the big red \u201cReady for CPI\u201d button at the bottom of the panel (not shown here). On the CPI\u2019s version of the interface, it will provide a place to \u201csign\u201d the configuration with their CPI certificate, which they will upload to the interface. This must happen before the device can get a spectrum grant. E. Status Tab After the CPI signs the eNB configuration, under the \u201cStatus\u201d tab (visible in the config panel), you should see \u201cNot yet Registered\u201d (or a similar message) because the eNB has not checked in to the Google SAS yet with its matching parameters to complete the multi-step process. If something has otherwise gone wrong, you\u2019ll see an error message here. F. Other helpful links Google CBSD registration and deregistration Elevation finder tool with map III. Steps in Baicells Cloud interface A. Make a Baicells OMC account. Due to Baicells\u2019 use of a \u201cdomain proxy\u201d for their SAS requests, you will need to make a new user account in the Baicells Operators Management Console (OMC): https://cloudcore.baicells.com:4443/ This is distinct from their paid \u201cCloud Core\u201d service which we will not be using in this tutorial, although the management portal is the same. B. Take note of the CloudKey Once you have made an account, note the 6-letter \u201cCloudKey\u201d in the upper right corner of the screen (circled in red). This will need to be inputted into the local eNB management portal for the eNB to check into the Cloud OMC. On your version of this portal, if you\u2019re doing this for the first time, you shouldn\u2019t see any eNBs already present. C. Set your SAS service provider. Navigate to Advance\u2192SAS in the left hand menu, and then click the gear icon on the upper right corner, which has the hover text \u201cSettings.\u201d IV. Steps in Baicells management interface A. Local Management Portal The Baicells eNodeB (eNB) is best managed through the browser-based management portal; the current command line interface is accessible but extremely limited. The default IP address of the management portal (and that of most Baicells equipment I\u2019ve seen) is 192.168.150.1, and the default login credentials are admin/admin. I would recommend changing the admin login credentials to be more secure. Connect your computer to the eNB via Ethernet, and navigate to this IP address in your browser (using http://192.168.150.1, not https). Baicells Initial Login Screen: BTS Info\u2192\u201cBasic Info\u201d Page visible upon login: B. Upgrade firmware Upgrade the firmware to the latest firmware version that supports SAS functionality, or verify that it is already up to date. You can check the official firmware page under the correct eNB model. The Nova 233 CBRS small cell we\u2019re using is model mBS1105. The latest firmware version after which SAS is officially supported is BaiBS_RTS_3.6.6.IMG (as of Feb 2021), for which the direct download is available here . Do not skip this step, otherwise none of the following steps will work right. C. Get everything connected Once the firmware is upgraded, you will want to get the eNB connected to your local LTE core network (EPC) as well as to the Internet so it can contact the necessary SAS infrastructure. 1. Configure Internet Access (WAN) Navigate to the Network\u2192WAN/LAN/VLAN tab on the left hand menu. We will set the WAN interface IP address to 192.168.151.1, since the Baicells console requires (for whatever reason) a different subnet for the WAN as opposed to the LAN. Then we will connect the eNB to an Ethernet port on the EPC that has the IP address 192.168.151.2 (as set up in our previous tutorial), which will act as the eNB\u2019s Internet gateway. Don\u2019t forget to hit \u201cSave\u201d after each change you make in this interface. 2. Check Internet access At this point, if the EPC is configured correctly to pass eNB traffic to the Internet, the eNB should be able to ping an arbitrary IP address. To test this, navigate to the Network\u2192Diagnostics tab on the left hand menu and select \u201cPing\u201d under the \u201cMethod of Diagnostics\u201d dropdown menu. Set the \u201cTarget IP Domain\u201d to be a highly reachable IP address on the Internet such as 1.1.1.1, which is the CloudFlare DNS server. Press \u201cImplement.\u201d If the result is \u201cFail!\u201d as in the screenshot, there is likely something wrong with your eNB\u2019s Internet connection through the EPC; you should fix this issue before continuing. 3. Reboot as needed If a message appears that the eNB needs a reboot after the new settings are saved, navigate to the Reboot tab in the left hand menu and perform the reboot (Warm Reset is fine). 4. Attach to Baicells OMC To configure the eNB to talk to the OMC as discussed in the prior section, navigate to the BTS Setting\u2192Management Server tab in the management console and enter the CloudKey. Within a few minutes, the eNB should appear in your Baicells Cloud OMC console, and the \u201cBasic Info\u201d page should show that the OMC is \u201cConnected.\u201d 5. Disable IPsec For our purposes we will not be using IPsec between our EPC and eNB; the default IPSec configured is used for the Baicells Cloud EPC which we are not using. Navigate to the Network\u2192\u201cMME&IPSec Binding\u201d menu tab and set \u201cIPSec Status\u201d to \u201cDisable.\u201d You may also delete the IPSec tunnels as shown below. 6. Disable GPS Sync when testing indoors. Navigate to the \u201cBTS Setting\u201d\u2192\u201cSync Setting\u201d menu and disable both \u201cForced Sync\u201d and \u201cGPS Sync Switch,\u201d in case you need to work with the base station in a location where you don\u2019t have a strong GPS signal. Some base stations will not start up normally or attach to the EPC unless they get a GPS signal, and we should avoid this behavior. 7. Change the MME settings Change the MME settings. Since we are using our local EPC, we will need to change the MME settings to reflect our MME\u2019s IP address, on which it is listening for eNBs to attach, as well as other configurations. Navigate to the BTS Info\u2192Quick Setting tab on the left hand menu. Disable RF You should set the \u201cRF Status\u201d setting to \u201cDisable\u201d before you change the MME IP, because attaching to the MME will normally cause the eNB\u2019s radio to turn on. Since we have not enabled the eNB to ask for spectrum coordinated by the SAS yet, turning on the radio may cause unwanted interference on someone else\u2019s network. PLMN setting Remove the existing \u201cPLMN ID\u201d (by clicking the trash can symbol) and set it to the value that you have configured in your EPC. In our networks, we use \u201c91054\u201d as our PLMN, so add this as a \u201cPrimary\u201d and \u201cNotReserved\u201d PLMN by entering the number in the text box and clicking the \u201c+\u201d button. MME IP address Remove the existing MME IP associated with the old PLMN. Add the new MME IP address, in our case 192.168.150.2, by entering it in the text box and clicking \u201c+\u201d. This MME IP should be associated with the newly added PLMN by default. Save the changes and reboot the eNB (Warm Reset); after the reboot has finished (within a few minutes), the eNB should attach to the MME. If you navigate to BTS Info\u2192Basic Info, you should see the MME Status change from \u201cNot Connected\u201d to \u201cConnected.\u201d If you are looking at the MME logs on the EPC, you will also see the record that an eNB has attached. 8. Enable SAS SAS should only be enabled after successfully attaching the eNB to the MME. Unfortunately, when SAS is enabled, the eNB will not attach to the MME unless it has a currently valid authorization to transmit on a certain frequency. However, until it is attached to an MME, the Baicells Cloud OMC will not provide it this authorization. So we need to have SAS disabled first with the RF also disabled, attach the eNB to the MME, and then enable SAS. Choose \u201cMulti-step\u201d under \u201cSAS Registration Type,\u201d as specified in Section I.E. Also choose \u201cB\u201d under \u201ccategory,\u201d and write in the other parameters to match the ones with the same name in the Google SAS configuration. After you click \u201cSave,\u201d SAS should be enabled immediately. You should see the SAS enabled status change in the Baicells Cloud OMC. If all goes smoothly, your device should get an authorization to transmit within a few minutes and the radio should turn on! 9. Check Baicells CLOUD OMC to debug issues You can check the status of the SAS authorization process in the Cloud OMC. Here you can find logs (upper right corner of SAS screen, shown in the screenshot below) with any error messages that may have occurred in the process. Errors can be caused by invalid or non-matching parameter values, lack of CPI signature, lack of spectrum availability, etc. In more difficult cases, after device registration the SAS may not respond to spectrum inquiries without sending any clear error messages. I have encountered this scenario when requesting spectrum around midnight, which may have been caused by brief database unavailability during the daily \u201cSAS Sync\u201d or IAP. My recommendation is to avoid requesting a new spectrum grant after 11 pm PST. If you change anything about the equipment used on site or the location/orientation of the equipment, you need to change the SAS registration, have it re-signed by the CPI, and use the Baicells OMC to re-request a new spectrum authorization- this process is described in the following section. V. How to change location, antenna properties, etc. after deployment As an example, this section will show how you would change the equipment\u2019s location upon moving from test site to deployment site. Get the new GPS location either manually using Google Maps/Earth, or automatically using Baicells OMC\u2019s GPS reading for the eNB if available. Google SAS steps In the upper right hand corner of the Google SAS configuration for the deployed equipment (long narrow right side panel for a particular site), press the unlock button (shaped like a padlock) to make the configuration editable. To edit the site location, click on the map pin icon in the upper left corner of this same right hand configuration panel to enter the location panel. Enter the new GPS coordinates in the box. After your changes, lock the site configuration again. (If the red \u201cReady for CPI\u201d button appears again at the bottom of the main configuration panel, go ahead and click it to prompt the CPI to sign.) You may have to wait a few minutes or hours for the changes to sync to the CPI\u2019s SAS database view. If after a while the CPI still cannot see the location change, ask them to enter the new GPS coordinates in their own interface and re-sign the configuration. Baicells Cloud OMC steps On the Baicells OMC, navigate to the Advance\u2192SAS screen where you can see the list of CBRS devices and their SAS status. Click on the 3 dots ( \u2807) symbol before the serial number for a particular device and click on \u201cProcedure\u201d to enter the SAS procedure screen. On the Procedure screen, you can see the most recent SAS logs, relinquish and re-request active spectrum authorizations, or de-register and re-register devices. First click on the \u201cAuthorized\u201d icon and click on the \u201cRelinquishment req\u201d button to relinquish the current spectrum authorization. Then the latter two icons will become greyed out, but the device will remain registered. We will need to fully de-register and re-register the device with the new parameters. Click the \u201cRegistered\u201d icon and then the \u201cDe-register\u201d button when it appears to de-register the device. Once the device is in the \u201cUnregistered\u201d state, click the \u201cUnregistered\u201d icon and then click the \u201cRegister req\u201d button when it appears. If all goes well, the device should re-register, and also request and receive a new grant (completing the full procedure) within a few moments.","title":"Step 2. eNodeB and SAS Setup"},{"location":"infrastructure/sas-setup/#step-2-enodeb-and-sas-setup","text":"","title":"Step 2: eNodeB and SAS Setup"},{"location":"infrastructure/sas-setup/#introduction","text":"Despite CBRS being a relatively open frequency band, the processes for spectrum access are still somewhat opaque and require significant capital investment and/or ISP-level resources to set up. To clarify this process, here\u2019s a step by step walkthrough tutorial of the setup of a Baicells eNodeB (eNB) base station running in the Citizen\u2019s Broadband Radio Service (CBRS) spectrum band (or band 48). Before following this tutorial, you should have completed the setup of a LTE Evolved Packet Core (EPC) to control your eNB, for which the setup of an open source version based on open5gs is outlined in this tutorial .","title":"Introduction"},{"location":"infrastructure/sas-setup/#i-get-set-up-with-a-spectrum-access-system-sas","text":"","title":"I. Get set up with a Spectrum Access System (SAS)"},{"location":"infrastructure/sas-setup/#a-why-get-set-up-with-a-sas","text":"Current FCC regulations require all CBRS equipment (called a CBSD) to be registered on a Spectrum Access System (SAS) that coordinates all spectrum assignments and ensures that no transmissions interfere with each other. This will likely require a commercial agreement with a SAS provider such as Google, Federated Wireless, etc. This tutorial uses the Google SAS.","title":"A. Why get set up with a SAS?"},{"location":"infrastructure/sas-setup/#b-cpi-license","text":"At least one member of your team will require \u201cCertified Professional Installer\u201d (CPI) training and license in order to hold legal responsibility for and sign off on device installations. Most SAS providers will offer training at about $500 for both an online training course and the certification exam. If you aren\u2019t able to get someone on your team certified, be sure to collaborate with a CPI! Feel free to contact us at the Local Connectivity Lab if you need support for your community project in this regard, and we can figure out what is feasible. The following are some links and helpful notes about this process: * https://wifidevan.wordpress.com/cbrs-certified-professional-installer-cpi-study-notes/ * https://alliancecorporation.ca/webinars/webinars-webinars/cbrs-for-beginners-part-2-by-commscope/ * https://cbrs.wirelessinnovation.org/acronyms","title":"B. CPI License"},{"location":"infrastructure/sas-setup/#c-sas-pricing-agreements","text":"For Google, the price options provided us in summer 2020 were: Fixed Wireless SAS services are billed per link/household so you pay for each CPE (Customer Premises Equipment) CBSD registered with SAS. CBSDs that operate as base stations are free of charge. Price Per Customer Link $2.25/month. Mobility/Private LTE (price is based on CBSD categoris) Category A CBSD max transmit capability: 30 dBm/10 MHz = 20 dBm/MHz or \u201c1 Watt\u201d mounted under 6m Height Above Average Terrain measured 3-16 km away from site $2.67/month Category B CBSD max transmit capability: Maximum EIRP of 47 dBm/10 MHz = 37 dBm/MHz or \u201c50 Watt\" $13.33/month.","title":"C. SAS Pricing Agreements"},{"location":"infrastructure/sas-setup/#d-sas-registration","text":"CBSDs must register their transmit capabilities with the SAS using either the \u201cone-step\u201d or \u201cmulti-step\u201d process. The one-step process requires you to input all installation parameters and sign them with the CPI certificate all on the base station itself, or via a cloud domain proxy such as used by Baicells. Not all base stations support this and the interfaces for doing so might vary widely, so \u201cmulti-step\u201d is typically recommended.","title":"D. SAS Registration"},{"location":"infrastructure/sas-setup/#ii-register-device-in-sas-portal","text":"This tutorial will be walking through steps following the specifics of the Google SAS portal interface, but the steps should be generalizable to other SAS portals.","title":"II. Register device in SAS portal"},{"location":"infrastructure/sas-setup/#a-once-you-have-an-account-on-an-sas-service-register-your-devices-on-their-portal-or-dashboard","text":"The Google SAS portal can be found at: https://wirelessconnectivity.google.com/sas/","title":"A. Once you have an account on an SAS service, register your devices on their portal or dashboard."},{"location":"infrastructure/sas-setup/#b-our-setup","text":"Our test setup in the lab includes: 1W Baicells Nova 233 base station in the CBRS band mounted on the 6th floor balcony of our UW computer science building. Alpha Wireless 18 dBi-gain panel antenna with a beamwidth of 65 degrees (model AW3014-T4), mounted straight ahead and not tilted down.","title":"B. Our Setup"},{"location":"infrastructure/sas-setup/#c-example-configuration","text":"An example configuration for this setup is shown below. The configuration screen is a right-hand sidebar next to the map view, hence the unwieldy aspect ratio. Explanation of parameters: CBSD Category (A or B): Defined by rules in Section I.C above User ID Specified by the SAS provider when you register FCC ID and Serial Number: Both the radio and antenna model must be pre-authorized for use with CBRS by the FCC. The FCC ID is used to identify this approved device type. The serial number specifies the exact device identity. Both can usually be found on the outside of the device (circled in image below). Beamforming Gain, Beamwidth Based on antenna specs in II.B EIRP Effective Isotropic Radiated Power of your system including both the base station radio and antenna. For a Cat B CBSD, this must be 46 dBm/10 MHz=36 dBm/MHz or lower. Calculate this value by adding the max transmit power (actually power density per MHz) of the base station, in our case 28 dBm, to the antenna beamforming gain, in our case 18 dBi; 28+18=36 dBm/MHz. For the units requested by the Google interface, add 10 to this value to specify power per 10 MHz instead of per MHz. Height Specified in terms of height Above Ground Level (AGL) which you can measure using a rangefinder/ measuring tape/ building plan, or in height Above Mean Sea Level (AMSL). Not in terms of HAAT as in the Cat A/B definition. Must be accurate to within 3 m. Azimuth Refers to the compass heading/ direction that the antenna is pointing (set this to 0 for an omnidirectional antenna). This FCC tool is extremely helpful for calculating the azimuth based on the antenna\u2019s gps location and that of a structure you are pointing it at. You can get these GPS coordinates via Google Maps or Google Earth. Air Interface E_UTRA is the LTE radio standard used by our Baicells box. The only \u201csupported spec\u201d currently available for Baicells is FFS (according to a forum post, linked here). Location: In the Google interface, set the site location in GPS coordinates under the tab labeled with the map pin icon. (not shown) Parameters under \"CBSD Info\" Call Sign As far as I can tell, this can be any reasonable alphanumeric string as long as it is unique and matches the value of the \u201ccall sign\u201d parameter as sent over by the eNB or domain proxy. You will set this in the SAS interface as well as either the eNB or Baicells Cloud Core (they all need to match). Others These should match the settings with the same name on the eNB\u2019s local management portal, shown on the \u201cBasic Info\u201d page in section IV.A below.","title":"C. Example Configuration"},{"location":"infrastructure/sas-setup/#d-cpi-signature","text":"When the parameters are all filled out, click the big red \u201cReady for CPI\u201d button at the bottom of the panel (not shown here). On the CPI\u2019s version of the interface, it will provide a place to \u201csign\u201d the configuration with their CPI certificate, which they will upload to the interface. This must happen before the device can get a spectrum grant.","title":"D. CPI Signature"},{"location":"infrastructure/sas-setup/#e-status-tab","text":"After the CPI signs the eNB configuration, under the \u201cStatus\u201d tab (visible in the config panel), you should see \u201cNot yet Registered\u201d (or a similar message) because the eNB has not checked in to the Google SAS yet with its matching parameters to complete the multi-step process. If something has otherwise gone wrong, you\u2019ll see an error message here.","title":"E. Status Tab"},{"location":"infrastructure/sas-setup/#f-other-helpful-links","text":"Google CBSD registration and deregistration Elevation finder tool with map","title":"F. Other helpful links"},{"location":"infrastructure/sas-setup/#iii-steps-in-baicells-cloud-interface","text":"","title":"III. Steps in Baicells Cloud interface"},{"location":"infrastructure/sas-setup/#a-make-a-baicells-omc-account","text":"Due to Baicells\u2019 use of a \u201cdomain proxy\u201d for their SAS requests, you will need to make a new user account in the Baicells Operators Management Console (OMC): https://cloudcore.baicells.com:4443/ This is distinct from their paid \u201cCloud Core\u201d service which we will not be using in this tutorial, although the management portal is the same.","title":"A. Make a Baicells OMC account."},{"location":"infrastructure/sas-setup/#b-take-note-of-the-cloudkey","text":"Once you have made an account, note the 6-letter \u201cCloudKey\u201d in the upper right corner of the screen (circled in red). This will need to be inputted into the local eNB management portal for the eNB to check into the Cloud OMC. On your version of this portal, if you\u2019re doing this for the first time, you shouldn\u2019t see any eNBs already present.","title":"B. Take note of the CloudKey"},{"location":"infrastructure/sas-setup/#c-set-your-sas-service-provider","text":"Navigate to Advance\u2192SAS in the left hand menu, and then click the gear icon on the upper right corner, which has the hover text \u201cSettings.\u201d","title":"C. Set your SAS service provider."},{"location":"infrastructure/sas-setup/#iv-steps-in-baicells-management-interface","text":"","title":"IV. Steps in Baicells management interface"},{"location":"infrastructure/sas-setup/#a-local-management-portal","text":"The Baicells eNodeB (eNB) is best managed through the browser-based management portal; the current command line interface is accessible but extremely limited. The default IP address of the management portal (and that of most Baicells equipment I\u2019ve seen) is 192.168.150.1, and the default login credentials are admin/admin. I would recommend changing the admin login credentials to be more secure. Connect your computer to the eNB via Ethernet, and navigate to this IP address in your browser (using http://192.168.150.1, not https). Baicells Initial Login Screen: BTS Info\u2192\u201cBasic Info\u201d Page visible upon login:","title":"A. Local Management Portal"},{"location":"infrastructure/sas-setup/#b-upgrade-firmware","text":"Upgrade the firmware to the latest firmware version that supports SAS functionality, or verify that it is already up to date. You can check the official firmware page under the correct eNB model. The Nova 233 CBRS small cell we\u2019re using is model mBS1105. The latest firmware version after which SAS is officially supported is BaiBS_RTS_3.6.6.IMG (as of Feb 2021), for which the direct download is available here . Do not skip this step, otherwise none of the following steps will work right.","title":"B. Upgrade firmware"},{"location":"infrastructure/sas-setup/#c-get-everything-connected","text":"Once the firmware is upgraded, you will want to get the eNB connected to your local LTE core network (EPC) as well as to the Internet so it can contact the necessary SAS infrastructure.","title":"C. Get everything connected"},{"location":"infrastructure/sas-setup/#1-configure-internet-access-wan","text":"Navigate to the Network\u2192WAN/LAN/VLAN tab on the left hand menu. We will set the WAN interface IP address to 192.168.151.1, since the Baicells console requires (for whatever reason) a different subnet for the WAN as opposed to the LAN. Then we will connect the eNB to an Ethernet port on the EPC that has the IP address 192.168.151.2 (as set up in our previous tutorial), which will act as the eNB\u2019s Internet gateway. Don\u2019t forget to hit \u201cSave\u201d after each change you make in this interface.","title":"1. Configure Internet Access (WAN)"},{"location":"infrastructure/sas-setup/#2-check-internet-access","text":"At this point, if the EPC is configured correctly to pass eNB traffic to the Internet, the eNB should be able to ping an arbitrary IP address. To test this, navigate to the Network\u2192Diagnostics tab on the left hand menu and select \u201cPing\u201d under the \u201cMethod of Diagnostics\u201d dropdown menu. Set the \u201cTarget IP Domain\u201d to be a highly reachable IP address on the Internet such as 1.1.1.1, which is the CloudFlare DNS server. Press \u201cImplement.\u201d If the result is \u201cFail!\u201d as in the screenshot, there is likely something wrong with your eNB\u2019s Internet connection through the EPC; you should fix this issue before continuing.","title":"2. Check Internet access"},{"location":"infrastructure/sas-setup/#3-reboot-as-needed","text":"If a message appears that the eNB needs a reboot after the new settings are saved, navigate to the Reboot tab in the left hand menu and perform the reboot (Warm Reset is fine).","title":"3. Reboot as needed"},{"location":"infrastructure/sas-setup/#4-attach-to-baicells-omc","text":"To configure the eNB to talk to the OMC as discussed in the prior section, navigate to the BTS Setting\u2192Management Server tab in the management console and enter the CloudKey. Within a few minutes, the eNB should appear in your Baicells Cloud OMC console, and the \u201cBasic Info\u201d page should show that the OMC is \u201cConnected.\u201d","title":"4. Attach to Baicells OMC"},{"location":"infrastructure/sas-setup/#5-disable-ipsec","text":"For our purposes we will not be using IPsec between our EPC and eNB; the default IPSec configured is used for the Baicells Cloud EPC which we are not using. Navigate to the Network\u2192\u201cMME&IPSec Binding\u201d menu tab and set \u201cIPSec Status\u201d to \u201cDisable.\u201d You may also delete the IPSec tunnels as shown below.","title":"5. Disable IPsec"},{"location":"infrastructure/sas-setup/#6-disable-gps-sync-when-testing-indoors","text":"Navigate to the \u201cBTS Setting\u201d\u2192\u201cSync Setting\u201d menu and disable both \u201cForced Sync\u201d and \u201cGPS Sync Switch,\u201d in case you need to work with the base station in a location where you don\u2019t have a strong GPS signal. Some base stations will not start up normally or attach to the EPC unless they get a GPS signal, and we should avoid this behavior.","title":"6. Disable GPS Sync when testing indoors."},{"location":"infrastructure/sas-setup/#7-change-the-mme-settings","text":"Change the MME settings. Since we are using our local EPC, we will need to change the MME settings to reflect our MME\u2019s IP address, on which it is listening for eNBs to attach, as well as other configurations. Navigate to the BTS Info\u2192Quick Setting tab on the left hand menu. Disable RF You should set the \u201cRF Status\u201d setting to \u201cDisable\u201d before you change the MME IP, because attaching to the MME will normally cause the eNB\u2019s radio to turn on. Since we have not enabled the eNB to ask for spectrum coordinated by the SAS yet, turning on the radio may cause unwanted interference on someone else\u2019s network. PLMN setting Remove the existing \u201cPLMN ID\u201d (by clicking the trash can symbol) and set it to the value that you have configured in your EPC. In our networks, we use \u201c91054\u201d as our PLMN, so add this as a \u201cPrimary\u201d and \u201cNotReserved\u201d PLMN by entering the number in the text box and clicking the \u201c+\u201d button. MME IP address Remove the existing MME IP associated with the old PLMN. Add the new MME IP address, in our case 192.168.150.2, by entering it in the text box and clicking \u201c+\u201d. This MME IP should be associated with the newly added PLMN by default. Save the changes and reboot the eNB (Warm Reset); after the reboot has finished (within a few minutes), the eNB should attach to the MME. If you navigate to BTS Info\u2192Basic Info, you should see the MME Status change from \u201cNot Connected\u201d to \u201cConnected.\u201d If you are looking at the MME logs on the EPC, you will also see the record that an eNB has attached.","title":"7. Change the MME settings"},{"location":"infrastructure/sas-setup/#8-enable-sas","text":"SAS should only be enabled after successfully attaching the eNB to the MME. Unfortunately, when SAS is enabled, the eNB will not attach to the MME unless it has a currently valid authorization to transmit on a certain frequency. However, until it is attached to an MME, the Baicells Cloud OMC will not provide it this authorization. So we need to have SAS disabled first with the RF also disabled, attach the eNB to the MME, and then enable SAS. Choose \u201cMulti-step\u201d under \u201cSAS Registration Type,\u201d as specified in Section I.E. Also choose \u201cB\u201d under \u201ccategory,\u201d and write in the other parameters to match the ones with the same name in the Google SAS configuration. After you click \u201cSave,\u201d SAS should be enabled immediately. You should see the SAS enabled status change in the Baicells Cloud OMC. If all goes smoothly, your device should get an authorization to transmit within a few minutes and the radio should turn on!","title":"8. Enable SAS"},{"location":"infrastructure/sas-setup/#9-check-baicells-cloud-omc-to-debug-issues","text":"You can check the status of the SAS authorization process in the Cloud OMC. Here you can find logs (upper right corner of SAS screen, shown in the screenshot below) with any error messages that may have occurred in the process. Errors can be caused by invalid or non-matching parameter values, lack of CPI signature, lack of spectrum availability, etc. In more difficult cases, after device registration the SAS may not respond to spectrum inquiries without sending any clear error messages. I have encountered this scenario when requesting spectrum around midnight, which may have been caused by brief database unavailability during the daily \u201cSAS Sync\u201d or IAP. My recommendation is to avoid requesting a new spectrum grant after 11 pm PST. If you change anything about the equipment used on site or the location/orientation of the equipment, you need to change the SAS registration, have it re-signed by the CPI, and use the Baicells OMC to re-request a new spectrum authorization- this process is described in the following section.","title":"9. Check Baicells CLOUD OMC to debug issues"},{"location":"infrastructure/sas-setup/#v-how-to-change-location-antenna-properties-etc-after-deployment","text":"As an example, this section will show how you would change the equipment\u2019s location upon moving from test site to deployment site. Get the new GPS location either manually using Google Maps/Earth, or automatically using Baicells OMC\u2019s GPS reading for the eNB if available. Google SAS steps In the upper right hand corner of the Google SAS configuration for the deployed equipment (long narrow right side panel for a particular site), press the unlock button (shaped like a padlock) to make the configuration editable. To edit the site location, click on the map pin icon in the upper left corner of this same right hand configuration panel to enter the location panel. Enter the new GPS coordinates in the box. After your changes, lock the site configuration again. (If the red \u201cReady for CPI\u201d button appears again at the bottom of the main configuration panel, go ahead and click it to prompt the CPI to sign.) You may have to wait a few minutes or hours for the changes to sync to the CPI\u2019s SAS database view. If after a while the CPI still cannot see the location change, ask them to enter the new GPS coordinates in their own interface and re-sign the configuration. Baicells Cloud OMC steps On the Baicells OMC, navigate to the Advance\u2192SAS screen where you can see the list of CBRS devices and their SAS status. Click on the 3 dots ( \u2807) symbol before the serial number for a particular device and click on \u201cProcedure\u201d to enter the SAS procedure screen. On the Procedure screen, you can see the most recent SAS logs, relinquish and re-request active spectrum authorizations, or de-register and re-register devices. First click on the \u201cAuthorized\u201d icon and click on the \u201cRelinquishment req\u201d button to relinquish the current spectrum authorization. Then the latter two icons will become greyed out, but the device will remain registered. We will need to fully de-register and re-register the device with the new parameters. Click the \u201cRegistered\u201d icon and then the \u201cDe-register\u201d button when it appears to de-register the device. Once the device is in the \u201cUnregistered\u201d state, click the \u201cUnregistered\u201d icon and then click the \u201cRegister req\u201d button when it appears. If all goes well, the device should re-register, and also request and receive a new grant (completing the full procedure) within a few moments.","title":"V. How to change location, antenna properties, etc. after deployment"},{"location":"infrastructure/software/","text":"Our Software Here is a list of the software that we use to deploy, maintain, and plan our network sites. Networking Local Services We use the CoLTE project maintained by the University of Washington ICTD Lab to provide services such as network monitoring, web-based administration, and local web and DNS serving/caching. Evolved Packet Core (EPC) Our EPC is powered by Open5GS , an open-source project for 4G and 5G core networks. Currently all of our networks are 4G networks. Spectrum Access System (SAS) We have a partnership with Google SAS to gain access to CBRS spectrum. Learn more about our SAS setup here . Network Monitoring and Alerting We use LibreNMS and SNMPd to monitor our nodes and provide alerting. Our Baicells-specific Network Manager setup is documented here , and our instructions for configuring a new node can be found here . Field Measurement Network Performance Measurement Tool The LCL Network Performance Measurement Tool is an Android App in development that will measure a variety of network metrics, including but not limited to ping, upload/download speed, signal strength. We will use this tool to easily capture and upload network metrics in the field so that we can provide better estimates of what kind of Internet access that our users can expect to receive. Network Cell Info Lite Network Cell Info Lite is an Android App on the Google Playstore that is free to use (with advertisements) and is capable of taking network metric measurements and recording them to upload. This is an option that we use but are not satisfied with for many reasons, which is why we are developing our own app. Site Planning Google Earth We primarily use the Google Earth Pro desktop application to do a rough line-of-sight evaluation. We perform what is called a \"viewshed analysis\" that allows us to determine what is visible from a specific point on Earth (e.g. a rooftop). Ubiquiti Line of Sight A web-based line of sight tool provided by Ubiquiti that contains helpful altitude data and diagrams. A drawback is that it is specialized to provide data for Ubiquiti devices only. Other resources Facebook ISP Toolbox Line of Sight A web-based line of sight tool provided by Facebook Connectivity that utilizes public LiDAR data. Unfortunately LiDAR data for the Seattle area is not present yet, although there is data for some areas in Tacoma. Facebook ISP Toolbox Market Evaluator A web-based market evaluator provided by Facebook Connectivity that can be used to provide more context about the areas around potential network sites. It offers information about other service providers in the area, average household income, median speeds, and current lowest broadband price available.","title":"Software Overview"},{"location":"infrastructure/software/#our-software","text":"Here is a list of the software that we use to deploy, maintain, and plan our network sites.","title":"Our Software"},{"location":"infrastructure/software/#networking","text":"","title":"Networking"},{"location":"infrastructure/software/#local-services","text":"We use the CoLTE project maintained by the University of Washington ICTD Lab to provide services such as network monitoring, web-based administration, and local web and DNS serving/caching.","title":"Local Services"},{"location":"infrastructure/software/#evolved-packet-core-epc","text":"Our EPC is powered by Open5GS , an open-source project for 4G and 5G core networks. Currently all of our networks are 4G networks.","title":"Evolved Packet Core (EPC)"},{"location":"infrastructure/software/#spectrum-access-system-sas","text":"We have a partnership with Google SAS to gain access to CBRS spectrum. Learn more about our SAS setup here .","title":"Spectrum Access System (SAS)"},{"location":"infrastructure/software/#network-monitoring-and-alerting","text":"We use LibreNMS and SNMPd to monitor our nodes and provide alerting. Our Baicells-specific Network Manager setup is documented here , and our instructions for configuring a new node can be found here .","title":"Network Monitoring and Alerting"},{"location":"infrastructure/software/#field-measurement","text":"","title":"Field Measurement"},{"location":"infrastructure/software/#network-performance-measurement-tool","text":"The LCL Network Performance Measurement Tool is an Android App in development that will measure a variety of network metrics, including but not limited to ping, upload/download speed, signal strength. We will use this tool to easily capture and upload network metrics in the field so that we can provide better estimates of what kind of Internet access that our users can expect to receive.","title":"Network Performance Measurement Tool"},{"location":"infrastructure/software/#network-cell-info-lite","text":"Network Cell Info Lite is an Android App on the Google Playstore that is free to use (with advertisements) and is capable of taking network metric measurements and recording them to upload. This is an option that we use but are not satisfied with for many reasons, which is why we are developing our own app.","title":"Network Cell Info Lite"},{"location":"infrastructure/software/#site-planning","text":"","title":"Site Planning"},{"location":"infrastructure/software/#google-earth","text":"We primarily use the Google Earth Pro desktop application to do a rough line-of-sight evaluation. We perform what is called a \"viewshed analysis\" that allows us to determine what is visible from a specific point on Earth (e.g. a rooftop).","title":"Google Earth"},{"location":"infrastructure/software/#ubiquiti-line-of-sight","text":"A web-based line of sight tool provided by Ubiquiti that contains helpful altitude data and diagrams. A drawback is that it is specialized to provide data for Ubiquiti devices only.","title":"Ubiquiti Line of Sight"},{"location":"infrastructure/software/#other-resources","text":"","title":"Other resources"},{"location":"infrastructure/software/#facebook-isp-toolbox-line-of-sight","text":"A web-based line of sight tool provided by Facebook Connectivity that utilizes public LiDAR data. Unfortunately LiDAR data for the Seattle area is not present yet, although there is data for some areas in Tacoma.","title":"Facebook ISP Toolbox Line of Sight"},{"location":"infrastructure/software/#facebook-isp-toolbox-market-evaluator","text":"A web-based market evaluator provided by Facebook Connectivity that can be used to provide more context about the areas around potential network sites. It offers information about other service providers in the area, average household income, median speeds, and current lowest broadband price available.","title":"Facebook ISP Toolbox Market Evaluator"},{"location":"learn/cable-crimping/","text":"Crimping Ethernet Cables In this article, you'll all about crimping ethernet cables! What is crimping an ethernet cable? Crimping an ethernet cable is the process of attaching connectors onto the ends of ethernet cables. This process is also called 'RJ45 crimping' because RJ45 is the name of the connectors that are used for ethernet cables, and they are what is being crimped. Why? Setting up networks involves setting up long ethernet cable connections between different devices. Instead of buying premade ethernet cables of varying lengths (e.g. 5ft, 10ft, 50ft, etc.), it's more practical to just have a big spool of cabling that we can roll out and cut to the exact length we need. Therefore we need to be able to attach RJ45 connectors to the ends of these cut cables so that we can actually plug them in! Crimping Kit Here are some tools you should have in your crimping kit! RJ45 Crimping Tool An RJ45 crimping tool is the most essential tool. Although it's technically possible to crimp ethernet cables without this specialized tool, it's not very practical for crimping lots of cables. Its primary utility is to do the actual 'crimping' part of compressing/crimping the tiny gold pins in the RJ45 connector onto the ethernet cables. It also has blades that can be used to cut or strip wires. Cable Stripper Cable strippers are used to take off the protecting shielding around cables and expose the inner wires. You can also do the same thing with a simple blade or pair of scissors. The trickiest part about stripping cables is trying to avoid cutting the inner wires! RJ45 Connectors RJ45 connectors are required for crimping because they feature the 8 golden pins that get crimped onto the 8 wires of the ethernet cable. They are what get plugged into ethernet ports! They also feature a latch/clip that locks the ethernet cable into the port once it is plugged in. RJ45 Boots RJ45 boots can be optionally used to protect the RJ45 connector. It provides insulation and prevents the cable from being breaking easily. They have to put slipped onto the cable before you put on the RJ45 connectors though! RJ45 Cable Tester RJ45 cable testers allow you to guarantee that you did the job correctly! They have two pieces that separate from each other, and you plug each end of your crimped ethernet cable into the port on each piece. Then you turn it on and the cable tester will test the connection for all 8 pins. If there are any missing lights on any of the pins, it means that you messed up somewhere and have to restart! How to Crimp an Ethernet Cable Assuming you have a crimping kit and an ethernet cable that needs to be crimped, here are all the steps! Step 0) Slip on the RJ45 boot (optional) Step 1) Strip the cable Push the cable into the razor slot of the strip tool and turn it around the cable to make an even cut around the sheath. Careful not to nick the wires inside! Unwrap the blue foil shielding and plastic to uncover the twisted wire pairs. Push the copper grounding wire to the side. (Ignore the white string.) Step 2) Organize the wires In this step, you'll be taking the 8 colored wires inside the ethernet cable and putting them into the correct ordering of colors. NOTE This is the hardest part of crimping! The wires are small and are hard to control. Take your time and make sure you do this step correctly! Otherwise you might have to go back and restart. Step 2.1) Untwist the wires There should be 4 pairs of wires: green, brown, orange, and blue. Each pair has a solid-colored wire and a striped-colored wire. Untwist these pairs and separate them into the 8 wires. Step 2.2) Straighten out wires After untwisting the wires, they are probably still kinked and look like they want to be twisted. In this step, you should carefully grab all the wires and try to straighten them out by pulling on them. This will prevent the wires from moving around later on. WARNING Don't break off the wires! Step 2.3) Lay out wires in order With your straightened out wires, put them into the correct order! Make sure that the wires are all flat and in line with each other. The ordering for these wires is: 1. Striped orange 2. Solid orange 3. Striped green 4. Solid blue 5. Striped blue 6. Solid green 7. Striped brown 8. Solid brown TIP After laying them out in order, straighten them out again as a group! This will help keep the wires together. Step 2.4) Trim the wires Trim the wires evenly to about 1/2 inch in length using scissors or the blade of your crimping tool. You want to make sure you have enough room for the wires to reach the end of the RJ45 connector. But also try to have room for the shielding of the cable to be inserted into the connector too. TIP You can put the wires side-by-side to the RJ45 connector to see how long you should cut it. Look at the next step to see what the final product looks like. TIP If you don't have the shielding inside of the connector, it makes it easier for the wires to snap off later, which is bad. TIP Make sure that you cut the wires evenly! Step 3) Slide wires into RJ45 connector Carefully slide your 8 wires into the connector. Make sure that the clip is facing away from you! If it is really hard to slide it into the connector, you probably didn't straighten out the wires enough in step 2.2 or 2.3. MORE INFO Inserting the wires with the clip facing away from you is the standard. However, you could technically do it in 'reverse' and insert the wires with the clip facing you, as long as you do it on both ends of the cable. You shouldn't do this in practice though because others would get confused when looking at your cable. Step 4) Crimp it Push the RJ45 connector into the slot of your crimping tool for RJ45 connectors. The slot should be labeled something like \"8P\" for the 8-pin RJ45 connector that you're using. In this step, you're doing the actual 'crimping' part and crimping/compressing/stabbing the 8 golden pins on the RJ45 connector into the 8 colored wires. TIP Squeeze as hard as you can! You need to make sure that all 8 pins are crimped. Step 5) Test it Slide the two pieces of the tester apart and plug each of the cable ends into either piece. Turn the switch to \u201cOn\u201d or \u201cSlow.\u201d If it's working, all 8 numbers should be flashing green. If any of them are not showing green, it means something is wrong and you have to redo it! The RJ45 connector can't be reused once it's crimped, so you should just cut the end off and start back at step 1. If everything is green, then you're done! If you had a cable boot, you can push the boots onto the RJ45 connector now. Resources Workshop Slides ISOC ICS Training Workshop Videos Crimping Tutorial (2 mins) Cable Testing Only need first 7 minutes for the basics Websites Color Coding Diagrams Crimping Comic From People's Open Network + sudomesh Shopping Crimping Kit ($23) Comes with a nice case Might need to buy your own batteries for cable tester Crimping Kit ($17) Might need to buy your own batteries for cable tester","title":"Crimping Ethernet Cables"},{"location":"learn/cable-crimping/#crimping-ethernet-cables","text":"In this article, you'll all about crimping ethernet cables!","title":"Crimping Ethernet Cables"},{"location":"learn/cable-crimping/#what-is-crimping-an-ethernet-cable","text":"Crimping an ethernet cable is the process of attaching connectors onto the ends of ethernet cables. This process is also called 'RJ45 crimping' because RJ45 is the name of the connectors that are used for ethernet cables, and they are what is being crimped.","title":"What is crimping an ethernet cable?"},{"location":"learn/cable-crimping/#why","text":"Setting up networks involves setting up long ethernet cable connections between different devices. Instead of buying premade ethernet cables of varying lengths (e.g. 5ft, 10ft, 50ft, etc.), it's more practical to just have a big spool of cabling that we can roll out and cut to the exact length we need. Therefore we need to be able to attach RJ45 connectors to the ends of these cut cables so that we can actually plug them in!","title":"Why?"},{"location":"learn/cable-crimping/#crimping-kit","text":"Here are some tools you should have in your crimping kit!","title":"Crimping Kit"},{"location":"learn/cable-crimping/#rj45-crimping-tool","text":"An RJ45 crimping tool is the most essential tool. Although it's technically possible to crimp ethernet cables without this specialized tool, it's not very practical for crimping lots of cables. Its primary utility is to do the actual 'crimping' part of compressing/crimping the tiny gold pins in the RJ45 connector onto the ethernet cables. It also has blades that can be used to cut or strip wires.","title":"RJ45 Crimping Tool"},{"location":"learn/cable-crimping/#cable-stripper","text":"Cable strippers are used to take off the protecting shielding around cables and expose the inner wires. You can also do the same thing with a simple blade or pair of scissors. The trickiest part about stripping cables is trying to avoid cutting the inner wires!","title":"Cable Stripper"},{"location":"learn/cable-crimping/#rj45-connectors","text":"RJ45 connectors are required for crimping because they feature the 8 golden pins that get crimped onto the 8 wires of the ethernet cable. They are what get plugged into ethernet ports! They also feature a latch/clip that locks the ethernet cable into the port once it is plugged in.","title":"RJ45 Connectors"},{"location":"learn/cable-crimping/#rj45-boots","text":"RJ45 boots can be optionally used to protect the RJ45 connector. It provides insulation and prevents the cable from being breaking easily. They have to put slipped onto the cable before you put on the RJ45 connectors though!","title":"RJ45 Boots"},{"location":"learn/cable-crimping/#rj45-cable-tester","text":"RJ45 cable testers allow you to guarantee that you did the job correctly! They have two pieces that separate from each other, and you plug each end of your crimped ethernet cable into the port on each piece. Then you turn it on and the cable tester will test the connection for all 8 pins. If there are any missing lights on any of the pins, it means that you messed up somewhere and have to restart!","title":"RJ45 Cable Tester"},{"location":"learn/cable-crimping/#how-to-crimp-an-ethernet-cable","text":"Assuming you have a crimping kit and an ethernet cable that needs to be crimped, here are all the steps!","title":"How to Crimp an Ethernet Cable"},{"location":"learn/cable-crimping/#step-0-slip-on-the-rj45-boot-optional","text":"","title":"Step 0) Slip on the RJ45 boot (optional)"},{"location":"learn/cable-crimping/#step-1-strip-the-cable","text":"Push the cable into the razor slot of the strip tool and turn it around the cable to make an even cut around the sheath. Careful not to nick the wires inside! Unwrap the blue foil shielding and plastic to uncover the twisted wire pairs. Push the copper grounding wire to the side. (Ignore the white string.)","title":"Step 1) Strip the cable"},{"location":"learn/cable-crimping/#step-2-organize-the-wires","text":"In this step, you'll be taking the 8 colored wires inside the ethernet cable and putting them into the correct ordering of colors. NOTE This is the hardest part of crimping! The wires are small and are hard to control. Take your time and make sure you do this step correctly! Otherwise you might have to go back and restart.","title":"Step 2) Organize the wires"},{"location":"learn/cable-crimping/#step-21-untwist-the-wires","text":"There should be 4 pairs of wires: green, brown, orange, and blue. Each pair has a solid-colored wire and a striped-colored wire. Untwist these pairs and separate them into the 8 wires.","title":"Step 2.1) Untwist the wires"},{"location":"learn/cable-crimping/#step-22-straighten-out-wires","text":"After untwisting the wires, they are probably still kinked and look like they want to be twisted. In this step, you should carefully grab all the wires and try to straighten them out by pulling on them. This will prevent the wires from moving around later on. WARNING Don't break off the wires!","title":"Step 2.2) Straighten out wires"},{"location":"learn/cable-crimping/#step-23-lay-out-wires-in-order","text":"With your straightened out wires, put them into the correct order! Make sure that the wires are all flat and in line with each other. The ordering for these wires is: 1. Striped orange 2. Solid orange 3. Striped green 4. Solid blue 5. Striped blue 6. Solid green 7. Striped brown 8. Solid brown TIP After laying them out in order, straighten them out again as a group! This will help keep the wires together.","title":"Step 2.3) Lay out wires in order"},{"location":"learn/cable-crimping/#step-24-trim-the-wires","text":"Trim the wires evenly to about 1/2 inch in length using scissors or the blade of your crimping tool. You want to make sure you have enough room for the wires to reach the end of the RJ45 connector. But also try to have room for the shielding of the cable to be inserted into the connector too. TIP You can put the wires side-by-side to the RJ45 connector to see how long you should cut it. Look at the next step to see what the final product looks like. TIP If you don't have the shielding inside of the connector, it makes it easier for the wires to snap off later, which is bad. TIP Make sure that you cut the wires evenly!","title":"Step 2.4) Trim the wires"},{"location":"learn/cable-crimping/#step-3-slide-wires-into-rj45-connector","text":"Carefully slide your 8 wires into the connector. Make sure that the clip is facing away from you! If it is really hard to slide it into the connector, you probably didn't straighten out the wires enough in step 2.2 or 2.3. MORE INFO Inserting the wires with the clip facing away from you is the standard. However, you could technically do it in 'reverse' and insert the wires with the clip facing you, as long as you do it on both ends of the cable. You shouldn't do this in practice though because others would get confused when looking at your cable.","title":"Step 3) Slide wires into RJ45 connector"},{"location":"learn/cable-crimping/#step-4-crimp-it","text":"Push the RJ45 connector into the slot of your crimping tool for RJ45 connectors. The slot should be labeled something like \"8P\" for the 8-pin RJ45 connector that you're using. In this step, you're doing the actual 'crimping' part and crimping/compressing/stabbing the 8 golden pins on the RJ45 connector into the 8 colored wires. TIP Squeeze as hard as you can! You need to make sure that all 8 pins are crimped.","title":"Step 4) Crimp it"},{"location":"learn/cable-crimping/#step-5-test-it","text":"Slide the two pieces of the tester apart and plug each of the cable ends into either piece. Turn the switch to \u201cOn\u201d or \u201cSlow.\u201d If it's working, all 8 numbers should be flashing green. If any of them are not showing green, it means something is wrong and you have to redo it! The RJ45 connector can't be reused once it's crimped, so you should just cut the end off and start back at step 1. If everything is green, then you're done! If you had a cable boot, you can push the boots onto the RJ45 connector now.","title":"Step 5) Test it"},{"location":"learn/cable-crimping/#resources","text":"","title":"Resources"},{"location":"learn/cable-crimping/#workshop-slides","text":"ISOC ICS Training Workshop","title":"Workshop Slides"},{"location":"learn/cable-crimping/#videos","text":"Crimping Tutorial (2 mins) Cable Testing Only need first 7 minutes for the basics","title":"Videos"},{"location":"learn/cable-crimping/#websites","text":"Color Coding Diagrams Crimping Comic From People's Open Network + sudomesh","title":"Websites"},{"location":"learn/cable-crimping/#shopping","text":"Crimping Kit ($23) Comes with a nice case Might need to buy your own batteries for cable tester Crimping Kit ($17) Might need to buy your own batteries for cable tester","title":"Shopping"},{"location":"learn/lte-networks/","text":"LTE Networks Our network uses a 4G LTE network architecture. Understanding everything is a huge challenge, but understanding it at a high-level is very achievable. Consider exploring all of these links as they all complement each other well! Helpful videos How Cell Service Actually Works Broad overview of cellular technologies, from the very basics up to advanced topics, in only 20 minutes AT&T Archives Video: AMPS Old video from 1978 about an older version of cell networks (AMPS) Very very high quality and gives good background on cellular networks Learn 4G LTE Network Architecture Quick high-level overview of 4G LTE architecture Only shows diagrams How does your mobile phone work? Very good visual for the entire system of how cell phones work today Has 3d animation so it's easier to understand conceptually Doesn't go over LTE architecture specifically Driving Factors of LTE Architecture Gain more understanding of the context around LTE architecture Helpful articles YaleBTS LTE Concepts Explains basically ALL the parts of the LTE architecture TutorialsPoint LTE Network Architecture Gives overview of LTE architecture Not very detailed, but it's a good introduction to the individual components of LTE Open5GS Introduction Documentation for Open5GS, the repo that our networks rely on This is the most applicable to our specific network because it's what we actually use.","title":"LTE Networks"},{"location":"learn/lte-networks/#lte-networks","text":"Our network uses a 4G LTE network architecture. Understanding everything is a huge challenge, but understanding it at a high-level is very achievable. Consider exploring all of these links as they all complement each other well!","title":"LTE Networks"},{"location":"learn/lte-networks/#helpful-videos","text":"How Cell Service Actually Works Broad overview of cellular technologies, from the very basics up to advanced topics, in only 20 minutes AT&T Archives Video: AMPS Old video from 1978 about an older version of cell networks (AMPS) Very very high quality and gives good background on cellular networks Learn 4G LTE Network Architecture Quick high-level overview of 4G LTE architecture Only shows diagrams How does your mobile phone work? Very good visual for the entire system of how cell phones work today Has 3d animation so it's easier to understand conceptually Doesn't go over LTE architecture specifically Driving Factors of LTE Architecture Gain more understanding of the context around LTE architecture","title":"Helpful videos"},{"location":"learn/lte-networks/#helpful-articles","text":"YaleBTS LTE Concepts Explains basically ALL the parts of the LTE architecture TutorialsPoint LTE Network Architecture Gives overview of LTE architecture Not very detailed, but it's a good introduction to the individual components of LTE Open5GS Introduction Documentation for Open5GS, the repo that our networks rely on This is the most applicable to our specific network because it's what we actually use.","title":"Helpful articles"},{"location":"learn/networking/","text":"Learn about Computer Networks This page is currently in development. For now, please view our lesson on computer networks from our Digital Stewards curriculum here . TODO","title":"Networking"},{"location":"learn/networking/#learn-about-computer-networks","text":"This page is currently in development. For now, please view our lesson on computer networks from our Digital Stewards curriculum here . TODO","title":"Learn about Computer Networks"},{"location":"learn/wireless-communication/","text":"Crash Course in Wireless Communication Authored by: Dominick Ta Last updated: June 18th, 2021 TODO: [ ] Expand on transmit/receiving in antennas section [ ] Finish communication section [ ] Finish protocols section This is a crash course in wireless communication: the magical way that we humans send information (e.g. music, messages, text, videos) to each other over long distances, without a wire. Wireless communication is primarily powered by radio waves, a physical thing that we as humans cannot see or touch. In this article you will gain a layman's understanding of how wireless communication works. Specifically, this article will cover the following broad topics: Radio waves and the physics behind it Antennas How data is communicated via radio waves Examples of wireless communication technologies This is not meant to be a comprehensive article, so there will be a lot of simplifications, analogies, and informal explanations. Please let me know at domta@cs.uw.edu if you see any inaccuracies, misconceptions, or misnomers. Radio waves Radio waves are just oscillations of energy that exist throughout our environment. They can be generated naturally by lightning, or artifically by equipment made by humans such as cell phones. The technical definition of radio waves are that they are a form of 'electromagnetic radiation'. Other types of electromagnetic radiation include visible light (what we get from the sun), infrared, and X-rays. How radio waves are created To understand why radio waves are considered a type of electromagnetic radiation, it is helpful to know how we generate radio waves. This section is not important to fully understand, but it is good to skim to have a basic idea of how this stuff works. We create radio waves by moving electrons back and forth within an electrically conductive object (an object made of material that allows electrons to move freely, such as metals). This works because electrons have special properties: All electrons have ' electric fields ' surrounding them that attracts and repels other charged particles. All moving electrons produce ' magnetic fields ' that are the basis for how magnets work. Therefore, when electrons move there are two fields (electric & magnetic) present that combine to create creates an ' electromagnetic field '. By moving an electron back and forth in an oscillating (repetitive) motion, these electromagnetic fields are constantly being disturbed/moved in a way that creates electromagnetic waves or equivalently, electromagnetic radiation . In this GIF below, we see the charge of an antenna changing, representing electrons moving back and forth within the antenna. This creates pulsating electromagnetic waves. Note: in this particular GIF, it is actually only showing the pulsating electric fields. In this GIF below, we are able to fully see an electromagnetic wave with a 3D representation. The red component of the wave represents the electric field, while the blue component represents the magnetic field. Notice how they are perpendicular to each other! This is also why the GIF above didn't show both fields: it was a 2D representation! In this section, we learned about radio waves. In essence, you can just think of radio waves as physical phenomenon that look like these sine waves: With the proper hardware and knowledge, we can create any type of wave we want! We can vary frequencies (how fast the waves go by), amplitudes (how tall/powerful the waves are), and phases (what position within the loop the wave is in). Frequency & Wavelength It turns out that a fundamental characteristic of any given radio wave is its frequency. Therefore, it's important to know what 'frequency' means, and how it relates to the concept of 'wavelength'. Frequency is a measurement of how often something happens. In the case of radio waves, it measures how many cycles of a radio wave occurs in a certain amonut of time. Frequency is measured in the units of hertz (Hz) , which represents cycles per second. If we had a radio wave that passed through 10 complete cycles in a minute, it would have a frequency of 0.16Hz (10 cycles per 60 seconds). Wavelength measures the physical length of a single cycle in a radio wave. If we could see radio waves and measure it, and we saw that there was a distance of 10-feet between two of the peaks in a radio wave, then that radio wave would have a wavelength of 10 feet. In the image above, we can see a natural relationship between frequency and wavelength: a faster frequency means that you will have shorter wavelengths! Or conversely, longer wavelengths means that there is a slower frequency! When one value goes up, the other value has to go down; this is called an inverse relationship . So if I told you that I had a radio wave with a very high frequency, you could figure out that my radio wave has very small wavelengths. And actually, if I told you exactly what frequency my radio waves travelled at, you'd be able to figure out the exact size of the wavelength! For example, if I told you I had a radio wave with a frequency of 10Hz, you would be able to figure out that my radio wave has a wavelength of approximately 30,000,000 meters. This is because radio waves are a physical thing, so they always travel through air at the same speed: the speed of light. This means we can consistently convert back and forth between frequency and wavelength with some basic algebra. The basic equation, where c is the speed of light (3.0 x 10^8 m/s), is: frequency (Hz) * wavelength (m) = c So given a radio wave with a frequency of 10Hz, to solve for wavelength, I just need to take the speed of light and divide by 10! 30,000,000 divided by 10 gives a value of a wavelength of 30,000,000 meters. To summarize this section, frequency and wavelength are important properties of radio waves. Although they describe different aspects of a radio wave, they are essentially synonymous because we can easily convert between the two. When people are talking about radio waves, you may hear them talk in terms of frequencies (e.g. megahertz, gigahertz) or you may hear them talk in terms of wavelengths (e.g. meters). In the next section, we'll see why exactly frequency is such an important characteristic of radio waves. How we distinguish between radio waves An important thing to remember about radio waves is that nowadays they surround us everywhere we go! Radio waves are powerful because they can go through obstacles like walls, and they can potentially propagate over huge distances at a relatively cheap cost. Radio waves are used to communicate information in technologies such as GPS, WiFi, Bluetooth, cell phones, music radio stations, and more. The problem with this is that these radio waves interfere with each other and combine together to become a jumbled mess! They are all co-existing within the same space, and they can't avoid each other. In real life we don't get to have nice, simple, isolated radio wave like in the previous sections, we get a mix of radio waves coming all at once! And somehow, we have to find and narrow down the signal we care about. Imagine you are at an airport and you're trying to talk to your friend, but it is super crowded and theres people talking and shouting all around you. It would be super hard to hear your friend and have a conversation! (In this situation the people represent devices that use radio waves, the sound waves represent radio waves, and the voices & words represent the data we want to transmit) But if your friend talks loud enough, even though your ear is full of noise from everyone else in the airport, you can still figure out what your friend is trying to tell you. This is because you're smart enough to recognize what your friend's voice sounds like and you can focus on that voice. We can do the same thing with radio waves of different frequencies! (Being able to focus on your friend's specific voice is analogous to being able to focus on only radio waves of a specific frequency) In the image below, we can see a red radio wave. This radio wave is actually the combination of 5 radio waves of different frequencies! In the blue, we see this same signal analyzed and split into the individual components, located at its respective frequencies. (Analogy: 5 people talking at the same time, what your ears hear is the red. Your brain recognizing that these are 5 different voices is the blue) The mathematical process of going from the red representation (the signal in the time domain) to the blue representation (the signal in the frequency domain) is called the \"Discrete Fourier Transform\". You may also hear about something called the \"Fast Fourier Transform\" which is the discrete fourier transform, but a very clever and fast way to calculate it. (Intuitively, the DFT/FFT is essentially comparing a bunch of sine waves of varying frequencies to the signal detected, and calculating how similar they are. This would be like your brain iterating through all possible human voices and checking to see how strongly your ears hear that particular voice) This means that even though there may be a jumbled mess of radio waves surrounding us at all times, if they are radio waves of different frequencies, we are able to distinguish between all these different frequencies using some old fashioned engineering. This non-trivial fact is what allows our world to have so many different types of devices communicating wirelessly all at the same time! They are all using radio waves, all in the same space, but at different frequencies! This is why radio waves are identified by their frequency (or wavelength). Summary In this section on radio waves, we learned about what they are, the basics of how they're produced, frequency & wavelength, and how we distinguish between different radio waves co-existing in the same space. These are the fundamental concepts behind the physics of radio waves that engineers take advantage of. In the next section on antennas, we will learn what they are and how they are used to efficiently propagate/send radio waves. In another section, we will learn more about how exactly we manipulate radio waves to convey the information we want to send. Antennas We use antennas in our everyday lives, but most people don't know how they work. We use antennas on cars, on buildings, and even within our computers and phones! How they work Material properties Antennas are all made up of electrically conductive material. This usually means antennas are made out of metals like copper. Materials that are electrically conductive allow electrons to freely move throughout it. The opposite type of material would be electrically insulating material. As a real-life analogy, imagine a typical swimming pool filled with water. A normal pool like this allows people to freely swim through it! In this analogy the water represents electrically conductive material and people represent electrons. Now imagine a piece of copper metal as being that pool of water. Because copper is electrically conductive, electrons can freely move through it! An analogy for an electrically insulating material would be a swimming pool filled with jello/pudding/gelatin. If someone tried diving into that pool, they wouldn't get very far and it'd be super hard or impossible to swim through it. In this analogy the jello/pudding/gelatin represents electrically insulating material and people represent electrons. Now imagine a piece of plastic being that pool of water. Because plastic is electrically insulating, eletrons are mostly stuck where they are inside the plastic! Taking advantage of moving electrons Antennas need to be electrically conductive because they transmit and receive radio waves by taking advantage of the movement of electrons. In the above section on \"How radio waves are created\" we learned that radio waves are generated by moving an electron back and forth in an oscillating (repetitive) motion. This oscillation of electrons occurs in the antennas. If antennas weren't electrically conductive, these electrons wouldn't be able to move and create these radio waves! How transmitting with an antenna works In order to transmit with an antenna, the antenna needs to be connected to an electrical component that can control the movement of these electrons. TODO: expand/clarify? How receiving with an antenna works Antennas receive radio signals passively. As the electromagnetic fields are manipulated in the environment around an antenna, the electrons in the antenna move accordingly (because of how the physics of it work). By monitoring the movement of these electrons, the respective radio wave can be captured. TODO: expand/clarify? Communicating with radio waves How do we as humans harness this power of manipulating radio waves as communication? We agree on a bunch of different rules and conventions on how we will manipulating these radio waves to convey information efficiently and responsibly. In the United States, most of these rules are established and enforced by the Federal Communications Commission (FCC). An analogy To lay a conceptual foundation for this relatively abstract section, here is an analogy. Suppose we have two friends with the simple names of \"A\" and \"B\" that want to talk to each other over a distance, but they cant see, hear, or touch each other over that distance. The only way method of communication they have is a really long piece of rope between them. So once they travel far away from each other, they will each be holding one end of the rope and will be trying to communicate. But before they travel far away from each other, they need to talk to each other to figure out a set of rules of communication so that they can understand each other when they feel the rope moving. When coming up with these rules for communication, one of the first things that A & B need to do is come up with a language. Because A & B really like computers, they chose the language of computers: binary. They chose this language because it is super simple and effective; it only has two letters (1 and 0) and you can send tons of information by being clever with 1s and 0s (thats what computers do). Now the next thing that A & B needs to do is figure out how to use the rope to send these 1s and 0s. Here are some ideas they brainstormed together: * If the rope is moving up and down (oscillating), then that is considered a 1. If the rope is not moving, then that is considered a 0. * If the rope is oscillating super fast then that's a 1, but if the rope is oscillating slowly then that's a 0. * If the rope is oscillating super fast then that's a 0, but if the rope is oscillating slowly then that's a 1. * If the rope is oscillating with a big height then that's a 1, but if the rope is oscillating with small height then that's a 0. A & B realized two properties of the movement of the rope that they could capture: (1) frequency, how fast the rope is oscillating, and (2) amplitude, how tall the rope is when its oscillating. The term for manipulating these properties is \"modulation\". This makes sense because a dictionary definition of modulation is \"to adjust\"; modulation is just a fancy word for changing. In this analogy, the material/medium of communication was the rope. But in our context, the material/medium of communication is radio waves. Both of these materials have frequency and amplitude that can be modulated to send information, and demodulated to receive that information. In the next section, we'll learn about frequency and amplitude modulation. We'll also learn about some other types of modulation that don't have a direct real-life connection to ropes. Modulation Frequency modulation Amplitude modulation Other modulation schemes Frequency allocation Baseband signal and carrier signals Bandwidth Bands and Channels Wireless Communication Protocols In the previous section on \"Communicating with Radio Waves\", we learned how we are able to transmit messages wirelessly over radio waves via modulation. We understood this through our analogy with friends A & B who came up with a way to send letters in their binary language (1 and 0) through a rope. Assuming they were able to do this successfully, they could send long streams of messages that look something like \"101011100101010101010\". But that's still not enough! They need to come up with a 'protocol' for deciphering what this message actually means! For example, they could come up with a simple protocol for sending messages about how their day went. * The first 3 letters would represent how their day went: \"101\" could mean that they had a good day, and \"010\" could mean that they had a bad day, and maybe \"110\" means that their day went okay. * The next 3 letters would represent the weather: \"100\" could mean that it was sunny and \"101\" could mean that it was rainy. We have these same types of protocols in real life that are much more complicated. They are carefully designed to ensure security (can people intercept messages?), reliability (what if the message gets messed up in certain places?), and efficiency (how much useful data can we send at a time?). WiFi Bluetooth Cellular communication","title":"Wireless Communication"},{"location":"learn/wireless-communication/#crash-course-in-wireless-communication","text":"Authored by: Dominick Ta Last updated: June 18th, 2021 TODO: [ ] Expand on transmit/receiving in antennas section [ ] Finish communication section [ ] Finish protocols section This is a crash course in wireless communication: the magical way that we humans send information (e.g. music, messages, text, videos) to each other over long distances, without a wire. Wireless communication is primarily powered by radio waves, a physical thing that we as humans cannot see or touch. In this article you will gain a layman's understanding of how wireless communication works. Specifically, this article will cover the following broad topics: Radio waves and the physics behind it Antennas How data is communicated via radio waves Examples of wireless communication technologies This is not meant to be a comprehensive article, so there will be a lot of simplifications, analogies, and informal explanations. Please let me know at domta@cs.uw.edu if you see any inaccuracies, misconceptions, or misnomers.","title":"Crash Course in Wireless Communication"},{"location":"learn/wireless-communication/#radio-waves","text":"Radio waves are just oscillations of energy that exist throughout our environment. They can be generated naturally by lightning, or artifically by equipment made by humans such as cell phones. The technical definition of radio waves are that they are a form of 'electromagnetic radiation'. Other types of electromagnetic radiation include visible light (what we get from the sun), infrared, and X-rays.","title":"Radio waves"},{"location":"learn/wireless-communication/#how-radio-waves-are-created","text":"To understand why radio waves are considered a type of electromagnetic radiation, it is helpful to know how we generate radio waves. This section is not important to fully understand, but it is good to skim to have a basic idea of how this stuff works. We create radio waves by moving electrons back and forth within an electrically conductive object (an object made of material that allows electrons to move freely, such as metals). This works because electrons have special properties: All electrons have ' electric fields ' surrounding them that attracts and repels other charged particles. All moving electrons produce ' magnetic fields ' that are the basis for how magnets work. Therefore, when electrons move there are two fields (electric & magnetic) present that combine to create creates an ' electromagnetic field '. By moving an electron back and forth in an oscillating (repetitive) motion, these electromagnetic fields are constantly being disturbed/moved in a way that creates electromagnetic waves or equivalently, electromagnetic radiation . In this GIF below, we see the charge of an antenna changing, representing electrons moving back and forth within the antenna. This creates pulsating electromagnetic waves. Note: in this particular GIF, it is actually only showing the pulsating electric fields. In this GIF below, we are able to fully see an electromagnetic wave with a 3D representation. The red component of the wave represents the electric field, while the blue component represents the magnetic field. Notice how they are perpendicular to each other! This is also why the GIF above didn't show both fields: it was a 2D representation! In this section, we learned about radio waves. In essence, you can just think of radio waves as physical phenomenon that look like these sine waves: With the proper hardware and knowledge, we can create any type of wave we want! We can vary frequencies (how fast the waves go by), amplitudes (how tall/powerful the waves are), and phases (what position within the loop the wave is in).","title":"How radio waves are created"},{"location":"learn/wireless-communication/#frequency-wavelength","text":"It turns out that a fundamental characteristic of any given radio wave is its frequency. Therefore, it's important to know what 'frequency' means, and how it relates to the concept of 'wavelength'. Frequency is a measurement of how often something happens. In the case of radio waves, it measures how many cycles of a radio wave occurs in a certain amonut of time. Frequency is measured in the units of hertz (Hz) , which represents cycles per second. If we had a radio wave that passed through 10 complete cycles in a minute, it would have a frequency of 0.16Hz (10 cycles per 60 seconds). Wavelength measures the physical length of a single cycle in a radio wave. If we could see radio waves and measure it, and we saw that there was a distance of 10-feet between two of the peaks in a radio wave, then that radio wave would have a wavelength of 10 feet. In the image above, we can see a natural relationship between frequency and wavelength: a faster frequency means that you will have shorter wavelengths! Or conversely, longer wavelengths means that there is a slower frequency! When one value goes up, the other value has to go down; this is called an inverse relationship . So if I told you that I had a radio wave with a very high frequency, you could figure out that my radio wave has very small wavelengths. And actually, if I told you exactly what frequency my radio waves travelled at, you'd be able to figure out the exact size of the wavelength! For example, if I told you I had a radio wave with a frequency of 10Hz, you would be able to figure out that my radio wave has a wavelength of approximately 30,000,000 meters. This is because radio waves are a physical thing, so they always travel through air at the same speed: the speed of light. This means we can consistently convert back and forth between frequency and wavelength with some basic algebra. The basic equation, where c is the speed of light (3.0 x 10^8 m/s), is: frequency (Hz) * wavelength (m) = c So given a radio wave with a frequency of 10Hz, to solve for wavelength, I just need to take the speed of light and divide by 10! 30,000,000 divided by 10 gives a value of a wavelength of 30,000,000 meters. To summarize this section, frequency and wavelength are important properties of radio waves. Although they describe different aspects of a radio wave, they are essentially synonymous because we can easily convert between the two. When people are talking about radio waves, you may hear them talk in terms of frequencies (e.g. megahertz, gigahertz) or you may hear them talk in terms of wavelengths (e.g. meters). In the next section, we'll see why exactly frequency is such an important characteristic of radio waves.","title":"Frequency & Wavelength"},{"location":"learn/wireless-communication/#how-we-distinguish-between-radio-waves","text":"An important thing to remember about radio waves is that nowadays they surround us everywhere we go! Radio waves are powerful because they can go through obstacles like walls, and they can potentially propagate over huge distances at a relatively cheap cost. Radio waves are used to communicate information in technologies such as GPS, WiFi, Bluetooth, cell phones, music radio stations, and more. The problem with this is that these radio waves interfere with each other and combine together to become a jumbled mess! They are all co-existing within the same space, and they can't avoid each other. In real life we don't get to have nice, simple, isolated radio wave like in the previous sections, we get a mix of radio waves coming all at once! And somehow, we have to find and narrow down the signal we care about. Imagine you are at an airport and you're trying to talk to your friend, but it is super crowded and theres people talking and shouting all around you. It would be super hard to hear your friend and have a conversation! (In this situation the people represent devices that use radio waves, the sound waves represent radio waves, and the voices & words represent the data we want to transmit) But if your friend talks loud enough, even though your ear is full of noise from everyone else in the airport, you can still figure out what your friend is trying to tell you. This is because you're smart enough to recognize what your friend's voice sounds like and you can focus on that voice. We can do the same thing with radio waves of different frequencies! (Being able to focus on your friend's specific voice is analogous to being able to focus on only radio waves of a specific frequency) In the image below, we can see a red radio wave. This radio wave is actually the combination of 5 radio waves of different frequencies! In the blue, we see this same signal analyzed and split into the individual components, located at its respective frequencies. (Analogy: 5 people talking at the same time, what your ears hear is the red. Your brain recognizing that these are 5 different voices is the blue) The mathematical process of going from the red representation (the signal in the time domain) to the blue representation (the signal in the frequency domain) is called the \"Discrete Fourier Transform\". You may also hear about something called the \"Fast Fourier Transform\" which is the discrete fourier transform, but a very clever and fast way to calculate it. (Intuitively, the DFT/FFT is essentially comparing a bunch of sine waves of varying frequencies to the signal detected, and calculating how similar they are. This would be like your brain iterating through all possible human voices and checking to see how strongly your ears hear that particular voice) This means that even though there may be a jumbled mess of radio waves surrounding us at all times, if they are radio waves of different frequencies, we are able to distinguish between all these different frequencies using some old fashioned engineering. This non-trivial fact is what allows our world to have so many different types of devices communicating wirelessly all at the same time! They are all using radio waves, all in the same space, but at different frequencies! This is why radio waves are identified by their frequency (or wavelength).","title":"How we distinguish between radio waves"},{"location":"learn/wireless-communication/#summary","text":"In this section on radio waves, we learned about what they are, the basics of how they're produced, frequency & wavelength, and how we distinguish between different radio waves co-existing in the same space. These are the fundamental concepts behind the physics of radio waves that engineers take advantage of. In the next section on antennas, we will learn what they are and how they are used to efficiently propagate/send radio waves. In another section, we will learn more about how exactly we manipulate radio waves to convey the information we want to send.","title":"Summary"},{"location":"learn/wireless-communication/#antennas","text":"We use antennas in our everyday lives, but most people don't know how they work. We use antennas on cars, on buildings, and even within our computers and phones!","title":"Antennas"},{"location":"learn/wireless-communication/#how-they-work","text":"","title":"How they work"},{"location":"learn/wireless-communication/#material-properties","text":"Antennas are all made up of electrically conductive material. This usually means antennas are made out of metals like copper. Materials that are electrically conductive allow electrons to freely move throughout it. The opposite type of material would be electrically insulating material. As a real-life analogy, imagine a typical swimming pool filled with water. A normal pool like this allows people to freely swim through it! In this analogy the water represents electrically conductive material and people represent electrons. Now imagine a piece of copper metal as being that pool of water. Because copper is electrically conductive, electrons can freely move through it! An analogy for an electrically insulating material would be a swimming pool filled with jello/pudding/gelatin. If someone tried diving into that pool, they wouldn't get very far and it'd be super hard or impossible to swim through it. In this analogy the jello/pudding/gelatin represents electrically insulating material and people represent electrons. Now imagine a piece of plastic being that pool of water. Because plastic is electrically insulating, eletrons are mostly stuck where they are inside the plastic!","title":"Material properties"},{"location":"learn/wireless-communication/#taking-advantage-of-moving-electrons","text":"Antennas need to be electrically conductive because they transmit and receive radio waves by taking advantage of the movement of electrons. In the above section on \"How radio waves are created\" we learned that radio waves are generated by moving an electron back and forth in an oscillating (repetitive) motion. This oscillation of electrons occurs in the antennas. If antennas weren't electrically conductive, these electrons wouldn't be able to move and create these radio waves!","title":"Taking advantage of moving electrons"},{"location":"learn/wireless-communication/#how-transmitting-with-an-antenna-works","text":"In order to transmit with an antenna, the antenna needs to be connected to an electrical component that can control the movement of these electrons. TODO: expand/clarify?","title":"How transmitting with an antenna works"},{"location":"learn/wireless-communication/#how-receiving-with-an-antenna-works","text":"Antennas receive radio signals passively. As the electromagnetic fields are manipulated in the environment around an antenna, the electrons in the antenna move accordingly (because of how the physics of it work). By monitoring the movement of these electrons, the respective radio wave can be captured. TODO: expand/clarify?","title":"How receiving with an antenna works"},{"location":"learn/wireless-communication/#communicating-with-radio-waves","text":"How do we as humans harness this power of manipulating radio waves as communication? We agree on a bunch of different rules and conventions on how we will manipulating these radio waves to convey information efficiently and responsibly. In the United States, most of these rules are established and enforced by the Federal Communications Commission (FCC).","title":"Communicating with radio waves"},{"location":"learn/wireless-communication/#an-analogy","text":"To lay a conceptual foundation for this relatively abstract section, here is an analogy. Suppose we have two friends with the simple names of \"A\" and \"B\" that want to talk to each other over a distance, but they cant see, hear, or touch each other over that distance. The only way method of communication they have is a really long piece of rope between them. So once they travel far away from each other, they will each be holding one end of the rope and will be trying to communicate. But before they travel far away from each other, they need to talk to each other to figure out a set of rules of communication so that they can understand each other when they feel the rope moving. When coming up with these rules for communication, one of the first things that A & B need to do is come up with a language. Because A & B really like computers, they chose the language of computers: binary. They chose this language because it is super simple and effective; it only has two letters (1 and 0) and you can send tons of information by being clever with 1s and 0s (thats what computers do). Now the next thing that A & B needs to do is figure out how to use the rope to send these 1s and 0s. Here are some ideas they brainstormed together: * If the rope is moving up and down (oscillating), then that is considered a 1. If the rope is not moving, then that is considered a 0. * If the rope is oscillating super fast then that's a 1, but if the rope is oscillating slowly then that's a 0. * If the rope is oscillating super fast then that's a 0, but if the rope is oscillating slowly then that's a 1. * If the rope is oscillating with a big height then that's a 1, but if the rope is oscillating with small height then that's a 0. A & B realized two properties of the movement of the rope that they could capture: (1) frequency, how fast the rope is oscillating, and (2) amplitude, how tall the rope is when its oscillating. The term for manipulating these properties is \"modulation\". This makes sense because a dictionary definition of modulation is \"to adjust\"; modulation is just a fancy word for changing. In this analogy, the material/medium of communication was the rope. But in our context, the material/medium of communication is radio waves. Both of these materials have frequency and amplitude that can be modulated to send information, and demodulated to receive that information. In the next section, we'll learn about frequency and amplitude modulation. We'll also learn about some other types of modulation that don't have a direct real-life connection to ropes.","title":"An analogy"},{"location":"learn/wireless-communication/#modulation","text":"","title":"Modulation"},{"location":"learn/wireless-communication/#frequency-modulation","text":"","title":"Frequency modulation"},{"location":"learn/wireless-communication/#amplitude-modulation","text":"","title":"Amplitude modulation"},{"location":"learn/wireless-communication/#other-modulation-schemes","text":"","title":"Other modulation schemes"},{"location":"learn/wireless-communication/#frequency-allocation","text":"","title":"Frequency allocation"},{"location":"learn/wireless-communication/#baseband-signal-and-carrier-signals","text":"","title":"Baseband signal and carrier signals"},{"location":"learn/wireless-communication/#bandwidth","text":"","title":"Bandwidth"},{"location":"learn/wireless-communication/#bands-and-channels","text":"","title":"Bands and Channels"},{"location":"learn/wireless-communication/#wireless-communication-protocols","text":"In the previous section on \"Communicating with Radio Waves\", we learned how we are able to transmit messages wirelessly over radio waves via modulation. We understood this through our analogy with friends A & B who came up with a way to send letters in their binary language (1 and 0) through a rope. Assuming they were able to do this successfully, they could send long streams of messages that look something like \"101011100101010101010\". But that's still not enough! They need to come up with a 'protocol' for deciphering what this message actually means! For example, they could come up with a simple protocol for sending messages about how their day went. * The first 3 letters would represent how their day went: \"101\" could mean that they had a good day, and \"010\" could mean that they had a bad day, and maybe \"110\" means that their day went okay. * The next 3 letters would represent the weather: \"100\" could mean that it was sunny and \"101\" could mean that it was rainy. We have these same types of protocols in real life that are much more complicated. They are carefully designed to ensure security (can people intercept messages?), reliability (what if the message gets messed up in certain places?), and efficiency (how much useful data can we send at a time?).","title":"Wireless Communication Protocols"},{"location":"learn/wireless-communication/#wifi","text":"","title":"WiFi"},{"location":"learn/wireless-communication/#bluetooth","text":"","title":"Bluetooth"},{"location":"learn/wireless-communication/#cellular-communication","text":"","title":"Cellular communication"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Seattle Community Network Docs Welcome to the documentation website for the Seattle Community Network ! If you're looking for our main website, it is located at https://www.seattlecommunitynetwork.org . You're in the Right Place Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet , get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP We are a community . It's in our name! So, why not start by joining our community ? It's easy. What's here? Some topics you can find on this website include: FAQ - get the answers to some common questions. Community - get involved and learn more about our community, our rules, and what we're up to. Learn - gain some new skills that you can use to help out with our networks. Infrastructure - get the details on how our networks work behind the scenes.","title":"Home"},{"location":"#seattle-community-network-docs","text":"Welcome to the documentation website for the Seattle Community Network ! If you're looking for our main website, it is located at https://www.seattlecommunitynetwork.org .","title":"Seattle Community Network Docs"},{"location":"#youre-in-the-right-place","text":"Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet , get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP We are a community . It's in our name! So, why not start by joining our community ? It's easy.","title":"You're in the Right Place"},{"location":"#whats-here","text":"Some topics you can find on this website include: FAQ - get the answers to some common questions. Community - get involved and learn more about our community, our rules, and what we're up to. Learn - gain some new skills that you can use to help out with our networks. Infrastructure - get the details on how our networks work behind the scenes.","title":"What's here?"},{"location":"community/code-of-conduct/","text":"Code of Conduct The Seattle Community Network (SCN) is dedicated to fostering an environment in which everyone can participate in our meetups, installs, online spaces, and any other community event. We believe that diversity in our community is critical and should be celebrated. We welcome everyone of any race, age, gender, nationality, gender identity and expression, sexual orientation, disability, physical appearance, body size, religion, education, and skill level. The SCN community and experience often extends outside those spaces. Members meet in person to collaborate on projects, attend related meetups or conferences together, and communicate on social media. Abusive or unwelcoming behavior between SCN Members still has a profound impact on individuals and on the community when it happens beyond our events and online forums. We will use our discretion when deciding whether to enforce this code of conduct after reports of such behavior happening outside of our spaces, taking into account the impact on the individual Members involved as well as the impact on the community at large. Types of Behavior Encouraged Behavior All participants are expected to: be considerate, respectful, and collaborative. Specifically we expect participants to: Demonstrate empathy, kindness, and patience toward other people Assume the best intentions from others Be respectful of differing opinions, viewpoints, and experiences Give and gracefully accept constructive feedback Accept responsibility and apologize to those affected by our mistakes, and learn from the experience Focus on what is best not just for us as individuals, but for the overall community Unacceptable Behavior The following types of behavior are unacceptable at SCN, both online and in-person, and constitute code of conduct violations. Abusive Behavior Harassment Offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, nationality, immigration status, language, religion, or education level Sexual images in public spaces, unwelcome sexual or romantic attention, and inappropriate physical contact. Threats Threating someone physically or verbally. For example, threatening to publicize sensitive information about someone's personal life Hacking Any kind of malicious or harmful behavior towards other network users and their devices/data/property, or towards the network and its equipment or normal functioning. For example, DDOS attacks or unauthorized remote access. Unwelcoming Behavior Blatant -isms Saying things that are explicitly racist, sexist, homophobic, etc. For example, arguing that some people are less intelligent because of their gender, race or religion. Subtle -isms and small mistakes made in conversation are not code of conduct violations. However, repeating something after it has been pointed out to you that you made a member feel unwelcome, broke a social rule or antagonizing or arguing with someone who has pointed out your subtle -ism is considered unwelcoming behavior and is not allowed in SCN. Maliciousness towards other members Deliberately attempting to make others feel bad, name-calling, singling out others for derision or exclusion. For example, telling somone they're not technical enough or that they don't belong in SCN. Being especially unpleasant For example, if we've received reports from multiple members of annoying, rude, or especially distracting behavior. For example, repeatedly engaging in bad faith arguments, talking down to people, or excluding people from participation. Reporting Please report code of conduct violations either to the event organizer, by emailing lcl@seattlecommunitynetwork.org or by alerting moderators on Discord with the @moderators group tag. All of our moderators are volunteers, and will response with their best effort. However, if you provide your name, or contact info we promise to respond within two business days. How to Report In your report, please include: Subject line \"[SCN Code of Conduct Violation Report]\" followed by descriptive subject Your name This is incredibly helpful for us to be able to follow up with you, and ask questions to better understand the situation. You are welcome to report anonymously. Please only use this option if you really need to, and know that we might not be able to take action without knowing who you are. In any case, provide an email address so we can correspond with you about the report. A detailed description of what happened If the violation happened online, please link to or send us the relevant text. If the violation happened in person, please detail exactly what the other person said or did. In order to take action, we need to know the concrete actions that someone took. Where and when the incident happened Any other relevant context. Do you have examples of a pattern of similar behavior? Do you have a relationship with this person outside of SCN? If/how you've already responded - this lets us know the current state of the situation. Why to Report You are responsible for making SCN a safe and comfortable space for everyone. Everyone in our community shares this responsibility. Our volunteer Moderators are not around all the time, so we cannot enforce the code of conduct without your help. The consequences for SCN of not reporting bad behavior outweigh the consequences for one person reporting it. We sometimes hear \u201cI don\u2019t want X person to meet consequences because I told someone about their bad behavior.\u201d Consider the impact on everyone else at SCN of letting their behavior continue unchecked. SCN only works as a self-directed, community-driven effort because of shared trust between members. Reporting code of conduct violations helps us identify when this trust is broken, to prevent that from happening in the future. Enforcement Guidelines Moderators will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct. Correction Community Impact: Unwelcoming behavior. Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from moderators, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public or private apology may be requested in the venue where the behavior took place, for example on Discord or at the event. Warning Community Impact: A violation through a single incident of abusive behavior or series of unwelcoming behaviors. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. Temporary Ban Community Impact: A serious violation of community standards, including sustained unwelcoming behavior. Consequence: A temporary ban from any sort of participation, interaction, or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. Permanent Ban Community Impact: Demonstrating a pattern of violation of community standards, including sustained unwelcoming behavior, harassment or threatening of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of participation, or public interaction within the community. Discussion If you have questions about any aspect of the code of conduct, or want to propose amending it, please contact the @moderators group, or drop in to the public #governance channel on Discord. Attribution Taken almost verbatim from the NYC Mesh Code of Conduct . NYC Mesh CoC Attribution: Most of this is from the Recurse Center CoC. Other parts are from Strange Loop(community goals), Contributor Covenant (portion of the community goals, encouraged behaviors, enforcement guidelines), and the Toronto Mesh/Geek Feminism (guidelines for moderators).","title":"Code of Conduct"},{"location":"community/code-of-conduct/#code-of-conduct","text":"The Seattle Community Network (SCN) is dedicated to fostering an environment in which everyone can participate in our meetups, installs, online spaces, and any other community event. We believe that diversity in our community is critical and should be celebrated. We welcome everyone of any race, age, gender, nationality, gender identity and expression, sexual orientation, disability, physical appearance, body size, religion, education, and skill level. The SCN community and experience often extends outside those spaces. Members meet in person to collaborate on projects, attend related meetups or conferences together, and communicate on social media. Abusive or unwelcoming behavior between SCN Members still has a profound impact on individuals and on the community when it happens beyond our events and online forums. We will use our discretion when deciding whether to enforce this code of conduct after reports of such behavior happening outside of our spaces, taking into account the impact on the individual Members involved as well as the impact on the community at large.","title":"Code of Conduct"},{"location":"community/code-of-conduct/#types-of-behavior","text":"","title":"Types of Behavior"},{"location":"community/code-of-conduct/#encouraged-behavior","text":"All participants are expected to: be considerate, respectful, and collaborative. Specifically we expect participants to: Demonstrate empathy, kindness, and patience toward other people Assume the best intentions from others Be respectful of differing opinions, viewpoints, and experiences Give and gracefully accept constructive feedback Accept responsibility and apologize to those affected by our mistakes, and learn from the experience Focus on what is best not just for us as individuals, but for the overall community","title":"Encouraged Behavior"},{"location":"community/code-of-conduct/#unacceptable-behavior","text":"The following types of behavior are unacceptable at SCN, both online and in-person, and constitute code of conduct violations.","title":"Unacceptable Behavior"},{"location":"community/code-of-conduct/#abusive-behavior","text":"Harassment Offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, nationality, immigration status, language, religion, or education level Sexual images in public spaces, unwelcome sexual or romantic attention, and inappropriate physical contact. Threats Threating someone physically or verbally. For example, threatening to publicize sensitive information about someone's personal life Hacking Any kind of malicious or harmful behavior towards other network users and their devices/data/property, or towards the network and its equipment or normal functioning. For example, DDOS attacks or unauthorized remote access.","title":"Abusive Behavior"},{"location":"community/code-of-conduct/#unwelcoming-behavior","text":"Blatant -isms Saying things that are explicitly racist, sexist, homophobic, etc. For example, arguing that some people are less intelligent because of their gender, race or religion. Subtle -isms and small mistakes made in conversation are not code of conduct violations. However, repeating something after it has been pointed out to you that you made a member feel unwelcome, broke a social rule or antagonizing or arguing with someone who has pointed out your subtle -ism is considered unwelcoming behavior and is not allowed in SCN. Maliciousness towards other members Deliberately attempting to make others feel bad, name-calling, singling out others for derision or exclusion. For example, telling somone they're not technical enough or that they don't belong in SCN. Being especially unpleasant For example, if we've received reports from multiple members of annoying, rude, or especially distracting behavior. For example, repeatedly engaging in bad faith arguments, talking down to people, or excluding people from participation.","title":"Unwelcoming Behavior"},{"location":"community/code-of-conduct/#reporting","text":"Please report code of conduct violations either to the event organizer, by emailing lcl@seattlecommunitynetwork.org or by alerting moderators on Discord with the @moderators group tag. All of our moderators are volunteers, and will response with their best effort. However, if you provide your name, or contact info we promise to respond within two business days.","title":"Reporting"},{"location":"community/code-of-conduct/#how-to-report","text":"In your report, please include: Subject line \"[SCN Code of Conduct Violation Report]\" followed by descriptive subject Your name This is incredibly helpful for us to be able to follow up with you, and ask questions to better understand the situation. You are welcome to report anonymously. Please only use this option if you really need to, and know that we might not be able to take action without knowing who you are. In any case, provide an email address so we can correspond with you about the report. A detailed description of what happened If the violation happened online, please link to or send us the relevant text. If the violation happened in person, please detail exactly what the other person said or did. In order to take action, we need to know the concrete actions that someone took. Where and when the incident happened Any other relevant context. Do you have examples of a pattern of similar behavior? Do you have a relationship with this person outside of SCN? If/how you've already responded - this lets us know the current state of the situation.","title":"How to Report"},{"location":"community/code-of-conduct/#why-to-report","text":"You are responsible for making SCN a safe and comfortable space for everyone. Everyone in our community shares this responsibility. Our volunteer Moderators are not around all the time, so we cannot enforce the code of conduct without your help. The consequences for SCN of not reporting bad behavior outweigh the consequences for one person reporting it. We sometimes hear \u201cI don\u2019t want X person to meet consequences because I told someone about their bad behavior.\u201d Consider the impact on everyone else at SCN of letting their behavior continue unchecked. SCN only works as a self-directed, community-driven effort because of shared trust between members. Reporting code of conduct violations helps us identify when this trust is broken, to prevent that from happening in the future.","title":"Why to Report"},{"location":"community/code-of-conduct/#enforcement-guidelines","text":"Moderators will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct.","title":"Enforcement Guidelines"},{"location":"community/code-of-conduct/#correction","text":"Community Impact: Unwelcoming behavior. Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from moderators, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public or private apology may be requested in the venue where the behavior took place, for example on Discord or at the event.","title":"Correction"},{"location":"community/code-of-conduct/#warning","text":"Community Impact: A violation through a single incident of abusive behavior or series of unwelcoming behaviors. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.","title":"Warning"},{"location":"community/code-of-conduct/#temporary-ban","text":"Community Impact: A serious violation of community standards, including sustained unwelcoming behavior. Consequence: A temporary ban from any sort of participation, interaction, or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.","title":"Temporary Ban"},{"location":"community/code-of-conduct/#permanent-ban","text":"Community Impact: Demonstrating a pattern of violation of community standards, including sustained unwelcoming behavior, harassment or threatening of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of participation, or public interaction within the community.","title":"Permanent Ban"},{"location":"community/code-of-conduct/#discussion","text":"If you have questions about any aspect of the code of conduct, or want to propose amending it, please contact the @moderators group, or drop in to the public #governance channel on Discord.","title":"Discussion"},{"location":"community/code-of-conduct/#attribution","text":"Taken almost verbatim from the NYC Mesh Code of Conduct . NYC Mesh CoC Attribution: Most of this is from the Recurse Center CoC. Other parts are from Strange Loop(community goals), Contributor Covenant (portion of the community goals, encouraged behaviors, enforcement guidelines), and the Toronto Mesh/Geek Feminism (guidelines for moderators).","title":"Attribution"},{"location":"community/community-networking-toolkit/","text":"Community Networking Toolkit This is a toolkit/resource guide for anyone interested in starting up their own community network. Recommended Deployment Kit Here is a spreadsheet containing a bunch of tools and equipment that you should bring to network deployments. This was created by Esther Jang who has a lot of practical experience deploying sites. This spreadsheet is color-coded into different categories based on how important they are to have! Ethernet Crimping Ethernet crimping is an important skill for network site installations. The length of an ethernet cable connection is only truly known once you're on site so it is useful to be able to quickly cut ethernet cable to the desired length and crimp it. Our Guide to Crimping Workshop Slides Crimping Video Cable Testing Video (first 7 min only for basics) Ethernet Color Coding Diagrams Both the T-568A and the T-568B standard Straight-Through cables are used most often as patch cords for your Ethernet connections. If you require a cable to connect two Ethernet devices directly together without a hub or when you connect two hubs together, you will need to use a Crossover cable instead. Internet Society (ISOC) Materials Introduction to Community Networks All-aspects Community Networking Guides AlterMundi (Spanish Language) NYC Mesh - How to start a community network NYC Mesh Docs Telecommunications Reclaimed - Linked from NYC Mesh guide Start your own ISP This site is dedicated to helping you start your own Internet Service Provider. Specifically this guide is about building a Wireless ISP (WISP). Commotion Construction Kit The Commotion Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Neighborhood Network Construction Kit The Neighborhood Network Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Many of these activities were first released as part of the Commotion project. Community Technology Field Guide A collective resource for digital stewardship, digital justice and community infrastructure. These resources emphasize self-governance, participatory learning, collaborative design and sustainability. Building Broadband Commons - Tools for Planners and Communities Next Century City - Becoming Broadband Ready, a Toolkit for Communities Wireless Networking in the Developing World - Online Book Wireless Networking in the Developing World is a free book about designing, implementing, and maintaining low-cost wireless networks. Community Networks in Comics It is not easy to explain the concepts behind community networks, both the technical characteristics of radio frequency networks and the social and human aspects of community technologies. Teaching a workshop for popular groups using colonizing terms and methodologies can increase the existing barrier between people and a technology that was not created for their interests. With this in mind, images and analogies are powerful tools to make it easier to explain a technical term or an idea. We reject the premise that to do so would in any way underestimate people\u2019s ability to understand technical matters. Building Consentful Tech Zine In 2017, Una Lee, Dann Toliver, and their design firm And Also Too published the Building Consentful Tech Zine as a provocation on how to think about and design for consentfulness. This framing really resonated with our group, so we expanded it into a project where we prototype what this looks like in practice (and learned some interaction design methodologies on the way)! Report on Digital Skill Sets for Diverse Users The City of Seattle, in partnership with Technology and Social Change Group (TASCHA), developed a set of Digital Equity Indicators that helps measure Seattle\u2019s progress in meeting the initiative's goals. What digital skills do existing frameworks and curricula cover? What digital skills should the City and partners recommend to digital skill instructors to teach and promote? Do these resources have corresponding assessments to help assess individuals\u2019 digital skill abilities? Worksheet for Digital Skills for Diverse Users A list of 74 skills identified by TASCHA (see above resource) to include in digital equity curriculums Report on current state of Detroit Community Network In this case study, we focus on Detroit and the predominantly Black and lower-income neighborhood of the North End as an example of innovative, community-scale projects that are locally generated. New Community Networks by Douglas Schuler Online book about building and socially sustaining community networks, based on Doug Schuler's experiences with the Seattle Community Network project in the 90's (1996)","title":"Community Networking Toolkit"},{"location":"community/community-networking-toolkit/#community-networking-toolkit","text":"This is a toolkit/resource guide for anyone interested in starting up their own community network.","title":"Community Networking Toolkit"},{"location":"community/community-networking-toolkit/#recommended-deployment-kit","text":"Here is a spreadsheet containing a bunch of tools and equipment that you should bring to network deployments. This was created by Esther Jang who has a lot of practical experience deploying sites. This spreadsheet is color-coded into different categories based on how important they are to have!","title":"Recommended Deployment Kit"},{"location":"community/community-networking-toolkit/#ethernet-crimping","text":"Ethernet crimping is an important skill for network site installations. The length of an ethernet cable connection is only truly known once you're on site so it is useful to be able to quickly cut ethernet cable to the desired length and crimp it. Our Guide to Crimping Workshop Slides Crimping Video Cable Testing Video (first 7 min only for basics) Ethernet Color Coding Diagrams Both the T-568A and the T-568B standard Straight-Through cables are used most often as patch cords for your Ethernet connections. If you require a cable to connect two Ethernet devices directly together without a hub or when you connect two hubs together, you will need to use a Crossover cable instead.","title":"Ethernet Crimping"},{"location":"community/community-networking-toolkit/#internet-society-isoc-materials","text":"Introduction to Community Networks","title":"Internet Society (ISOC) Materials"},{"location":"community/community-networking-toolkit/#all-aspects-community-networking-guides","text":"AlterMundi (Spanish Language) NYC Mesh - How to start a community network NYC Mesh Docs Telecommunications Reclaimed - Linked from NYC Mesh guide Start your own ISP This site is dedicated to helping you start your own Internet Service Provider. Specifically this guide is about building a Wireless ISP (WISP). Commotion Construction Kit The Commotion Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Neighborhood Network Construction Kit The Neighborhood Network Construction Kit is a set of documentation tools that the Open Technology Institute has used in workshops around the world and at home. It is a \u201cdo it ourselves\u201d guide to building community wireless networks. Many of these activities were first released as part of the Commotion project. Community Technology Field Guide A collective resource for digital stewardship, digital justice and community infrastructure. These resources emphasize self-governance, participatory learning, collaborative design and sustainability. Building Broadband Commons - Tools for Planners and Communities Next Century City - Becoming Broadband Ready, a Toolkit for Communities Wireless Networking in the Developing World - Online Book Wireless Networking in the Developing World is a free book about designing, implementing, and maintaining low-cost wireless networks. Community Networks in Comics It is not easy to explain the concepts behind community networks, both the technical characteristics of radio frequency networks and the social and human aspects of community technologies. Teaching a workshop for popular groups using colonizing terms and methodologies can increase the existing barrier between people and a technology that was not created for their interests. With this in mind, images and analogies are powerful tools to make it easier to explain a technical term or an idea. We reject the premise that to do so would in any way underestimate people\u2019s ability to understand technical matters. Building Consentful Tech Zine In 2017, Una Lee, Dann Toliver, and their design firm And Also Too published the Building Consentful Tech Zine as a provocation on how to think about and design for consentfulness. This framing really resonated with our group, so we expanded it into a project where we prototype what this looks like in practice (and learned some interaction design methodologies on the way)! Report on Digital Skill Sets for Diverse Users The City of Seattle, in partnership with Technology and Social Change Group (TASCHA), developed a set of Digital Equity Indicators that helps measure Seattle\u2019s progress in meeting the initiative's goals. What digital skills do existing frameworks and curricula cover? What digital skills should the City and partners recommend to digital skill instructors to teach and promote? Do these resources have corresponding assessments to help assess individuals\u2019 digital skill abilities? Worksheet for Digital Skills for Diverse Users A list of 74 skills identified by TASCHA (see above resource) to include in digital equity curriculums Report on current state of Detroit Community Network In this case study, we focus on Detroit and the predominantly Black and lower-income neighborhood of the North End as an example of innovative, community-scale projects that are locally generated. New Community Networks by Douglas Schuler Online book about building and socially sustaining community networks, based on Doug Schuler's experiences with the Seattle Community Network project in the 90's (1996)","title":"All-aspects Community Networking Guides"},{"location":"community/join/","text":"Join Us Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet, get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP Do everything on this page! Our community is spread out in a lot of different places, so doing everything is the best way to make sure you don't miss out. Join our Discord! Discord is a messaging platform that we use to stay in touch with each other, organize our different teams, and update everyone on last minute things. This is a MUST do if you don't want to get left out! Follow these steps to join our Discord server: Click the invite link to enter the Discord server. Introduce yourself on the #introductions channel and friend request one of the moderators so they can chat with you (you can write @moderators in your message to get their attention). They will need to add a role for you as a \"member\" so you can stay on the server before you log out, otherwise you will have to be invited and join again. Install Discord on your computer , Android , or iOS device to always stay up-to-date. Chat with someone! The best way to get involved with the network is to find someone that can direct you! Most of our work happens in teams. Here's how to join a team . Subscribe to our Google calendar! On our Google calendar we post regular occurring meetings and any impromptu events like social events, emergency repairs, site visits, etc. This is one of the only places to find out about the meetings our various teams are having! Join using one of these options: Use this link that should prompt you to add the calendar to your Google account Use this ICS file to manually add the calendar via the iCalendar format. View the calendar here Follow our social media! Our social media team makes posts about upcoming meetings, social events, and they also occasionally make educational posts! Don't miss out and follow us on Instagram , Facebook , and Twitter . Visit our Community Lab Space! See the Space for details.","title":"Join Us"},{"location":"community/join/#join-us","text":"Seattle Community Network has a place for everyone . Whether you'd like to join to get free Internet, get involved to help out your community, learn some skills so that you can get a job, or all of the above! PRO TIP Do everything on this page! Our community is spread out in a lot of different places, so doing everything is the best way to make sure you don't miss out.","title":"Join Us"},{"location":"community/join/#join-our-discord","text":"Discord is a messaging platform that we use to stay in touch with each other, organize our different teams, and update everyone on last minute things. This is a MUST do if you don't want to get left out!","title":"Join our Discord!"},{"location":"community/join/#follow-these-steps-to-join-our-discord-server","text":"Click the invite link to enter the Discord server. Introduce yourself on the #introductions channel and friend request one of the moderators so they can chat with you (you can write @moderators in your message to get their attention). They will need to add a role for you as a \"member\" so you can stay on the server before you log out, otherwise you will have to be invited and join again. Install Discord on your computer , Android , or iOS device to always stay up-to-date.","title":"Follow these steps to join our Discord server:"},{"location":"community/join/#chat-with-someone","text":"The best way to get involved with the network is to find someone that can direct you! Most of our work happens in teams. Here's how to join a team .","title":"Chat with someone!"},{"location":"community/join/#subscribe-to-our-google-calendar","text":"On our Google calendar we post regular occurring meetings and any impromptu events like social events, emergency repairs, site visits, etc. This is one of the only places to find out about the meetings our various teams are having! Join using one of these options: Use this link that should prompt you to add the calendar to your Google account Use this ICS file to manually add the calendar via the iCalendar format. View the calendar here","title":"Subscribe to our Google calendar!"},{"location":"community/join/#follow-our-social-media","text":"Our social media team makes posts about upcoming meetings, social events, and they also occasionally make educational posts! Don't miss out and follow us on Instagram , Facebook , and Twitter .","title":"Follow our social media!"},{"location":"community/join/#visit-our-community-lab-space","text":"See the Space for details.","title":"Visit our Community Lab Space!"},{"location":"community/mission-vision-values/","text":"Mission, Vision, and Values Mission LCL seeks to democratize knowledge, skills, and resources to enable people to establish and run their own local, community-centered, and community-owned Internet access networks and digital infrastructure. Vision We envision a world where no one is excluded from access to the Internet, and where anyone can achieve the expertise and capability to bring communications infrastructure to their community and improve their quality of life. Values We value the ability to access the Internet and all public information and digital resources therein as a human right. - Digital privacy of our users and partner organizations - Collaboration, especially with the communities and organizations we work with - Care, consideration, allyship, and peer mentorship between individuals within our organization - Education, sharing, and capacity-building- emphasize teaching and dissemination of information and skills - Openness, transparency, and accountability of our organization and its processes - Democratization and inclusiveness of decision processes among stakeholders - Long-term sustainability of our technology deployments and community structures - Equity in planning for resource allocation, programming, and contribution","title":"Mission, Vision, Values"},{"location":"community/mission-vision-values/#mission-vision-and-values","text":"","title":"Mission, Vision, and Values"},{"location":"community/mission-vision-values/#mission","text":"LCL seeks to democratize knowledge, skills, and resources to enable people to establish and run their own local, community-centered, and community-owned Internet access networks and digital infrastructure.","title":"Mission"},{"location":"community/mission-vision-values/#vision","text":"We envision a world where no one is excluded from access to the Internet, and where anyone can achieve the expertise and capability to bring communications infrastructure to their community and improve their quality of life.","title":"Vision"},{"location":"community/mission-vision-values/#values","text":"We value the ability to access the Internet and all public information and digital resources therein as a human right. - Digital privacy of our users and partner organizations - Collaboration, especially with the communities and organizations we work with - Care, consideration, allyship, and peer mentorship between individuals within our organization - Education, sharing, and capacity-building- emphasize teaching and dissemination of information and skills - Openness, transparency, and accountability of our organization and its processes - Democratization and inclusiveness of decision processes among stakeholders - Long-term sustainability of our technology deployments and community structures - Equity in planning for resource allocation, programming, and contribution","title":"Values"},{"location":"community/partners/","text":"Our Partners Althea ALTSpace API Chaya (WiFi is a Lifeline) Black Brilliance Research Project Breakfast Group City of Seattle IT Compassion8 Innovation /dev/hack Filipino Community of Seattle Internet Archive Internet Society King County Library System Low Income Housing Institute Nickelsville Seattle Makers Seattle Public Schools Tacoma Cooperative Network Tacoma Public Library The Silent Task Force University of Washington","title":"Our Partners"},{"location":"community/partners/#our-partners","text":"Althea ALTSpace API Chaya (WiFi is a Lifeline) Black Brilliance Research Project Breakfast Group City of Seattle IT Compassion8 Innovation /dev/hack Filipino Community of Seattle Internet Archive Internet Society King County Library System Low Income Housing Institute Nickelsville Seattle Makers Seattle Public Schools Tacoma Cooperative Network Tacoma Public Library The Silent Task Force University of Washington","title":"Our Partners"},{"location":"community/space/","text":"Seattle Community Network Lab Space This page under construction! Address: Co-located at the /dev/hack hackerspace in Seattle, WA. 4534 1/2 University Way NE, Seattle WA 98105","title":"SCN Community Lab Space"},{"location":"community/space/#seattle-community-network-lab-space","text":"","title":"Seattle Community Network Lab Space"},{"location":"community/space/#this-page-under-construction","text":"Address: Co-located at the /dev/hack hackerspace in Seattle, WA. 4534 1/2 University Way NE, Seattle WA 98105","title":"This page under construction!"},{"location":"community/teams/","text":"Join a Team As a volunteer-run community network, we are always in need of extra hands. If you're interested in helping out, check out what our teams are working on here! Feel free to have informational meetings with the respective team leads to learn more about how you can help. There's no commitment required and we welcome you to take on as much work as you have the capacity for. Outreach Our outreach team is responsible for finding new site host partners, finding users, and maintaining communications with our current partners. Message the #outreach channel in Discord and contact Esther Jang to learn more about how you can get involved. This is the perfect team for you if any of the following apply to you: Experience with community organizing Have community connections in the Greater Seattle Area Have cultural humility and experience partnering with marginalized communities Have the ability to translate and/or interpret into non-English languages common in the Seattle area such as Spanish, Vietnamese, Somali, Oromo, Khmer, and more. As of July 2021, the primary objective of the outreach team is to get connected with users for our network sites that fit any of the following criteria: Unemployed Seniors Housing-unstable or houseless Non-English speaking Social Media Our social media team is in charge of our various accounts on Instagram , Facebook , and Twitter . They also develop branding and marketing materials for our various projects. Message the #social-media channel in Discord and contact Firn Tieanklin to learn more about how you can get involved. You should join this team if you have experience in or are interested in practicing any of the following skills/technologies: - Canva - Design - Marketing - Photography/Videography Web Development Our web development team is working on redesigning and developing our new website. Message the #website channel in Discord to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: HTML/CSS Javascript Bootstrap React Redux Web Design (Using Figma) Mobile App Development Our mobile app development team is currently developing an Android app to record cell network performance metrics during our field tests. Message the #measurement channel in Discord and contact Zhennan Zhou to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Android app development iOS app development Java Object oriented programming Open source development, Git, and GitHub Education Our education team plays a core role in our community networks as they enable our networks to be community-owned and operated. The education team is responsible for developing educational materials, running workshops, and teaching our Digital Steward cohorts. Message the #digital-stewards channel in Discord and contact Esther Jang to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Teaching Curriculum development Computer networks, LTE networks, and community networks Linux Community organizing Fundraising Our fundraising team is currently setting up a crowdfunding platform to raise money for various expenses that this project requires. Our fundraising team is also working on applying for various community grants and research grants. Message the #funding channel in Discord and contact Esther Jang to learn more about how you can get involved. Accounting & Legal Local Connectivity Lab, the nonprofit organizing that is incubating this project, often runs into accounting and legal challenges. If you are willing to provide pro bono services to benefit the community network, please contact Esther Jang at lcl@seattlecommunitynetwork.org.","title":"Join a Team"},{"location":"community/teams/#join-a-team","text":"As a volunteer-run community network, we are always in need of extra hands. If you're interested in helping out, check out what our teams are working on here! Feel free to have informational meetings with the respective team leads to learn more about how you can help. There's no commitment required and we welcome you to take on as much work as you have the capacity for.","title":"Join a Team"},{"location":"community/teams/#outreach","text":"Our outreach team is responsible for finding new site host partners, finding users, and maintaining communications with our current partners. Message the #outreach channel in Discord and contact Esther Jang to learn more about how you can get involved. This is the perfect team for you if any of the following apply to you: Experience with community organizing Have community connections in the Greater Seattle Area Have cultural humility and experience partnering with marginalized communities Have the ability to translate and/or interpret into non-English languages common in the Seattle area such as Spanish, Vietnamese, Somali, Oromo, Khmer, and more. As of July 2021, the primary objective of the outreach team is to get connected with users for our network sites that fit any of the following criteria: Unemployed Seniors Housing-unstable or houseless Non-English speaking","title":"Outreach"},{"location":"community/teams/#social-media","text":"Our social media team is in charge of our various accounts on Instagram , Facebook , and Twitter . They also develop branding and marketing materials for our various projects. Message the #social-media channel in Discord and contact Firn Tieanklin to learn more about how you can get involved. You should join this team if you have experience in or are interested in practicing any of the following skills/technologies: - Canva - Design - Marketing - Photography/Videography","title":"Social Media"},{"location":"community/teams/#web-development","text":"Our web development team is working on redesigning and developing our new website. Message the #website channel in Discord to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: HTML/CSS Javascript Bootstrap React Redux Web Design (Using Figma)","title":"Web Development"},{"location":"community/teams/#mobile-app-development","text":"Our mobile app development team is currently developing an Android app to record cell network performance metrics during our field tests. Message the #measurement channel in Discord and contact Zhennan Zhou to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Android app development iOS app development Java Object oriented programming Open source development, Git, and GitHub","title":"Mobile App Development"},{"location":"community/teams/#education","text":"Our education team plays a core role in our community networks as they enable our networks to be community-owned and operated. The education team is responsible for developing educational materials, running workshops, and teaching our Digital Steward cohorts. Message the #digital-stewards channel in Discord and contact Esther Jang to learn more about how you can get involved. You should join this team if you have experience in or are interested in learning any of the following skills/technologies: Teaching Curriculum development Computer networks, LTE networks, and community networks Linux Community organizing","title":"Education"},{"location":"community/teams/#fundraising","text":"Our fundraising team is currently setting up a crowdfunding platform to raise money for various expenses that this project requires. Our fundraising team is also working on applying for various community grants and research grants. Message the #funding channel in Discord and contact Esther Jang to learn more about how you can get involved.","title":"Fundraising"},{"location":"community/teams/#accounting-legal","text":"Local Connectivity Lab, the nonprofit organizing that is incubating this project, often runs into accounting and legal challenges. If you are willing to provide pro bono services to benefit the community network, please contact Esther Jang at lcl@seattlecommunitynetwork.org.","title":"Accounting & Legal"},{"location":"community/tech-help/","text":"Community Tech Help There are several ways to get community-based tech support from the SCN community, such as the Help Desk . You can use any of these methods to request Internet service from us, request general technology or computer help, or contact us about any other topic. Join our Discord! The FASTEST way to get support will be to join the #support channel on our Discord , a messaging platform that we use to organize. Follow these steps to join Discord: Join our Discord server via the invite link. You will need to log in or create an account to join, and a moderator will need to assign you a role before you are allowed to join permanently. Install Discord for your computer , Android , or iOS device to stay up-to-date on conversations. When posting to the #support channel, describe your question or problem in as much detail as you can. Someone from the community will most likely respond within a few hours. If you would like to get to know the community, introduce yourself in the #introductions channel! How did you hear about SCN and why are you interested? (More complete instructions can be found here ). Community-Run Help Desk The Seattle Community Network organizes a community-run tech help desk supported by the Black Brilliance Research Project's (BBR's) Digital Stewards Program and the Filipino Community of Seattle (FCS). Our current in-person help desk hours are on Fridays at 3-5 pm starting on 2/18/2022, located in the Filipino Community Village Integrated Learning Center (ILC) . Filipino Community Village Integrated Learning Center address: 5727 37th Ave S, Seattle, WA 98118 Our help desk is best-effort and mainly volunteer-based, so our virtual hours availability may be highly variable. Please check our available hours and sign up for an appointment slot using the calendar link below if you can (or contact us another way if that doesn't work), as it helps the volunteers plan for our time. However, you may also drop in during our scheduled calendar hours without an appointment. Our Help Desk Calendar : You can sign up for an appointment slot for any staffed volunteer hours indicated on the calendar. Phone Number (Voicemail-only except during staffed Community Tech Help hours): (253) 655-7221 You may also send text messages to this number, which will be checked during staffed hours. Inquiries about getting connected to our Internet service can also be sent here. Email address for general Tech Support: support@seattlecommunitynetwork.org Email address for SCN Internet service-related support: help@seattlecommunitynetwork.org Help Desk Volunteers We are actively recruiting more volunteers to help us run the help desk virtually, whenever and wherever that you are available. Join our team by simply signing up on this interest form , we need you! Please let us know if you have additional questions or concerns in the #support channel on our Discord . Documentation As always, please do not hesitate to consult our docs for any information, or submit an issue on the docs site github if there is information missing that you would like to see. Also feel free to message the Discord for the same purpose.","title":"Community Tech Help"},{"location":"community/tech-help/#community-tech-help","text":"There are several ways to get community-based tech support from the SCN community, such as the Help Desk . You can use any of these methods to request Internet service from us, request general technology or computer help, or contact us about any other topic.","title":"Community Tech Help"},{"location":"community/tech-help/#join-our-discord","text":"The FASTEST way to get support will be to join the #support channel on our Discord , a messaging platform that we use to organize.","title":"Join our Discord!"},{"location":"community/tech-help/#follow-these-steps-to-join-discord","text":"Join our Discord server via the invite link. You will need to log in or create an account to join, and a moderator will need to assign you a role before you are allowed to join permanently. Install Discord for your computer , Android , or iOS device to stay up-to-date on conversations. When posting to the #support channel, describe your question or problem in as much detail as you can. Someone from the community will most likely respond within a few hours. If you would like to get to know the community, introduce yourself in the #introductions channel! How did you hear about SCN and why are you interested? (More complete instructions can be found here ).","title":"Follow these steps to join Discord:"},{"location":"community/tech-help/#community-run-help-desk","text":"The Seattle Community Network organizes a community-run tech help desk supported by the Black Brilliance Research Project's (BBR's) Digital Stewards Program and the Filipino Community of Seattle (FCS). Our current in-person help desk hours are on Fridays at 3-5 pm starting on 2/18/2022, located in the Filipino Community Village Integrated Learning Center (ILC) . Filipino Community Village Integrated Learning Center address: 5727 37th Ave S, Seattle, WA 98118 Our help desk is best-effort and mainly volunteer-based, so our virtual hours availability may be highly variable. Please check our available hours and sign up for an appointment slot using the calendar link below if you can (or contact us another way if that doesn't work), as it helps the volunteers plan for our time. However, you may also drop in during our scheduled calendar hours without an appointment. Our Help Desk Calendar : You can sign up for an appointment slot for any staffed volunteer hours indicated on the calendar. Phone Number (Voicemail-only except during staffed Community Tech Help hours): (253) 655-7221 You may also send text messages to this number, which will be checked during staffed hours. Inquiries about getting connected to our Internet service can also be sent here. Email address for general Tech Support: support@seattlecommunitynetwork.org Email address for SCN Internet service-related support: help@seattlecommunitynetwork.org","title":"Community-Run Help Desk"},{"location":"community/tech-help/#help-desk-volunteers","text":"We are actively recruiting more volunteers to help us run the help desk virtually, whenever and wherever that you are available. Join our team by simply signing up on this interest form , we need you! Please let us know if you have additional questions or concerns in the #support channel on our Discord .","title":"Help Desk Volunteers"},{"location":"community/tech-help/#documentation","text":"As always, please do not hesitate to consult our docs for any information, or submit an issue on the docs site github if there is information missing that you would like to see. Also feel free to message the Discord for the same purpose.","title":"Documentation"},{"location":"contribute/contribute/","text":"Contribute to SCN Docs Looking to help? If you wanna share resources and help improve our docs, this page will get you started! Our docs are designed so that anyone can contribute. If this page isn't enough, contact one of us and we'll be able to help you! Our documentation uses MkDocs ReadTheDocs theme (links at the bottom of the page) Editing process To edit this documentation you should: Get your own copy of the repo Modify the documentation in your own repo (for more information see section on Local Development) Submit a pull request Wait for someone to review and accept the request The rest of this page will explain all the details you need to know about the directory structure, markdown, and other quirks for editing this documentation. Make sure to read everything! Markdown files All our documentation is stored in 'Markdown' files so that they can be easily modified and changed without heavy technical knowledge. Markdown Editors A nice and simple online editor is StackEdit which will let you type in markdown and see what it would look like in realtime in split-screen. Another option is HackMD which has the same features as StackEdit but it also allows you to connect to your own GitHub repo and pull/push. This is a nice option if you are uncomfortable with using Git from the command line. Local Development Using MkDocs MkDocs is pretty simple, just install it through pip then you can run mkdocs serve to locally view the website it will generate. Documentation Directory Structure Each directory has a .site file that declares the order each file/folder in that directory will show up. Children pages are implicit in the directory structure Static Files If you need static files for any of your pages, you should put them in the assets folder within the top level docs folder For example, for the cable-crimping page, the images for the tutorial are located in the \"assets/cable-crimping\" folder. These images can then be referenced relatively with the following standard markdown image syntax: ![RJ45 Crimping Tool](../assets/cable-crimping/kit-crimping-tool.jpg)","title":"Contribute to SCN Docs"},{"location":"contribute/contribute/#contribute-to-scn-docs","text":"","title":"Contribute to SCN Docs"},{"location":"contribute/contribute/#looking-to-help","text":"If you wanna share resources and help improve our docs, this page will get you started! Our docs are designed so that anyone can contribute. If this page isn't enough, contact one of us and we'll be able to help you! Our documentation uses MkDocs ReadTheDocs theme (links at the bottom of the page)","title":"Looking to help?"},{"location":"contribute/contribute/#editing-process","text":"To edit this documentation you should: Get your own copy of the repo Modify the documentation in your own repo (for more information see section on Local Development) Submit a pull request Wait for someone to review and accept the request The rest of this page will explain all the details you need to know about the directory structure, markdown, and other quirks for editing this documentation. Make sure to read everything!","title":"Editing process"},{"location":"contribute/contribute/#markdown-files","text":"All our documentation is stored in 'Markdown' files so that they can be easily modified and changed without heavy technical knowledge.","title":"Markdown files"},{"location":"contribute/contribute/#markdown-editors","text":"A nice and simple online editor is StackEdit which will let you type in markdown and see what it would look like in realtime in split-screen. Another option is HackMD which has the same features as StackEdit but it also allows you to connect to your own GitHub repo and pull/push. This is a nice option if you are uncomfortable with using Git from the command line.","title":"Markdown Editors"},{"location":"contribute/contribute/#local-development","text":"","title":"Local Development"},{"location":"contribute/contribute/#using-mkdocs","text":"MkDocs is pretty simple, just install it through pip then you can run mkdocs serve to locally view the website it will generate.","title":"Using MkDocs"},{"location":"contribute/contribute/#documentation-directory-structure","text":"Each directory has a .site file that declares the order each file/folder in that directory will show up. Children pages are implicit in the directory structure","title":"Documentation Directory Structure"},{"location":"contribute/contribute/#static-files","text":"If you need static files for any of your pages, you should put them in the assets folder within the top level docs folder For example, for the cable-crimping page, the images for the tutorial are located in the \"assets/cable-crimping\" folder. These images can then be referenced relatively with the following standard markdown image syntax: ![RJ45 Crimping Tool](../assets/cable-crimping/kit-crimping-tool.jpg)","title":"Static Files"},{"location":"faq/about/","text":"About Seattle Community Network Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. SCN is a project of Local Connectivity Lab, a 501(c)(3) registered non-profit that works to share free or low-cost broadband access in higher-need areas throughout the Puget Sound region, making use of existing network infrastructure such as buildings and fiber-optic cables to extend coverage to more people. As a community network, we rely on the help of local residents such as yourself to maintain and grow the network. Joining us is a great way to become an active member of your own community, make friends, and learn valuable technical skills.","title":"What is the Seattle Community Network?"},{"location":"faq/about/#about-seattle-community-network","text":"Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. SCN is a project of Local Connectivity Lab, a 501(c)(3) registered non-profit that works to share free or low-cost broadband access in higher-need areas throughout the Puget Sound region, making use of existing network infrastructure such as buildings and fiber-optic cables to extend coverage to more people. As a community network, we rely on the help of local residents such as yourself to maintain and grow the network. Joining us is a great way to become an active member of your own community, make friends, and learn valuable technical skills.","title":"About Seattle Community Network"},{"location":"faq/connection/","text":"How do I get Internet from the Seattle Community Network? Eligibility The Seattle Community Network exists to provide free or low-cost internet to low-income and in-need users. We prioritize serving the following groups: low-income families of students unemployed adults (looking for work) majority non-English speaking adults/families seniors Registration To connect to the internet through the Seattle Community Network, you will need to register with us. To register, you can: - Email lcl@seattlecommunitynetwork.org - Contact us by phone at (253) 655-7221 and leaving a voice mail or text. Hardware Once your registration is processed, you will receive the necessary hardware to connect to the network.","title":"How do I get Internet?"},{"location":"faq/connection/#how-do-i-get-internet-from-the-seattle-community-network","text":"","title":"How do I get Internet from the Seattle Community Network?"},{"location":"faq/connection/#eligibility","text":"The Seattle Community Network exists to provide free or low-cost internet to low-income and in-need users. We prioritize serving the following groups: low-income families of students unemployed adults (looking for work) majority non-English speaking adults/families seniors","title":"Eligibility"},{"location":"faq/connection/#registration","text":"To connect to the internet through the Seattle Community Network, you will need to register with us. To register, you can: - Email lcl@seattlecommunitynetwork.org - Contact us by phone at (253) 655-7221 and leaving a voice mail or text.","title":"Registration"},{"location":"faq/connection/#hardware","text":"Once your registration is processed, you will receive the necessary hardware to connect to the network.","title":"Hardware"},{"location":"faq/help/","text":"How can I Help? Volunteer! SCN is run completely by volunteers. There are many ways you can help, and no technology skills are required. We need help with everything from setting up network hardware and developing software to community outreach and fundraising. If you want to help, we can use your talents! First, make sure you get connected with our community . Next, why not Join a Team or Contribute to SCN Docs ?","title":"How can I Help?"},{"location":"faq/help/#how-can-i-help","text":"","title":"How can I Help?"},{"location":"faq/help/#volunteer","text":"SCN is run completely by volunteers. There are many ways you can help, and no technology skills are required. We need help with everything from setting up network hardware and developing software to community outreach and fundraising. If you want to help, we can use your talents! First, make sure you get connected with our community . Next, why not Join a Team or Contribute to SCN Docs ?","title":"Volunteer!"},{"location":"faq/how/","text":"How Does the Seattle Community Network Work? The Seattle Community Network partners with the University of Washington to share free or low-cost internet access with areas of higher need. The Seattle Community Network (SCN) is a wireless Internet access network using 4G LTE and WiFi technologies, providing public access from partner locations such as libraries, schools, businesses, and community centers. The Internet connection at these sites is shared wirelessly to nearby devices using the 4G LTE (cell-phone) data standard, which can be used by certain phones and hotspots (also known as Customer Premises Equipment or CPE). Individual users can connect to this signal using SCN-provided (or other compatible) devices to create a local WiFi network in their home. Some of our installed sites utilize a portion of the University of Washington's internet bandwidth, sharing it out to further neighborhoods via point-to-point wireless links. Some sites use other upstream internet service providers (ISPs) such as Lumen. The network is completely created, managed, and maintained by volunteers with a range of diverse skills in information technology and beyond. All infrastructure is paid for by generous donations from sponsors and the public. Speaking of which, why not volunteer or donate ?","title":"How does SCN Work?"},{"location":"faq/how/#how-does-the-seattle-community-network-work","text":"The Seattle Community Network partners with the University of Washington to share free or low-cost internet access with areas of higher need. The Seattle Community Network (SCN) is a wireless Internet access network using 4G LTE and WiFi technologies, providing public access from partner locations such as libraries, schools, businesses, and community centers. The Internet connection at these sites is shared wirelessly to nearby devices using the 4G LTE (cell-phone) data standard, which can be used by certain phones and hotspots (also known as Customer Premises Equipment or CPE). Individual users can connect to this signal using SCN-provided (or other compatible) devices to create a local WiFi network in their home. Some of our installed sites utilize a portion of the University of Washington's internet bandwidth, sharing it out to further neighborhoods via point-to-point wireless links. Some sites use other upstream internet service providers (ISPs) such as Lumen. The network is completely created, managed, and maintained by volunteers with a range of diverse skills in information technology and beyond. All infrastructure is paid for by generous donations from sponsors and the public. Speaking of which, why not volunteer or donate ?","title":"How Does the Seattle Community Network Work?"},{"location":"faq/site/","text":"About This Website The Seattle Community Network Docs website is the central hub for information about our community and networks. Here, we describe our infrastructure, how to set-up hardware and software, how you can start your own community network, our community rules, and more. This website is maintained by our volunteers, much like the rest of our services. This means you can help us improve it by adding missing information, clarifying confusing points, or even just fixing typos you notice while you\u2019re reading. See Contribute to SCN Docs to learn more about how you can contribute to this website. If you are looking for our main website, it is located at www.seattlecommunitynetwork.org .","title":"What is this site?"},{"location":"faq/site/#about-this-website","text":"The Seattle Community Network Docs website is the central hub for information about our community and networks. Here, we describe our infrastructure, how to set-up hardware and software, how you can start your own community network, our community rules, and more. This website is maintained by our volunteers, much like the rest of our services. This means you can help us improve it by adding missing information, clarifying confusing points, or even just fixing typos you notice while you\u2019re reading. See Contribute to SCN Docs to learn more about how you can contribute to this website. If you are looking for our main website, it is located at www.seattlecommunitynetwork.org .","title":"About This Website"},{"location":"faq/what/","text":"What is a Community Network? \"Community Networks (CNs) are crowd-sourced collaborative networks, developed in a bottom-up fashion by groups of individuals \u2013 i.e. communities \u2013 that design, develop and manage the network infrastructure as a common resource. Importantly, at the centre of CNs and the socio-economic ecosystems they generate lay the communities and their members, who are essential to initiate, maintain and guarantee the success of these connectivity efforts.\" Source: Building Community Network Policies: A Collaborative Governance towards Enabling Frameworks","title":"What is a Community Network?"},{"location":"faq/what/#what-is-a-community-network","text":"\"Community Networks (CNs) are crowd-sourced collaborative networks, developed in a bottom-up fashion by groups of individuals \u2013 i.e. communities \u2013 that design, develop and manage the network infrastructure as a common resource. Importantly, at the centre of CNs and the socio-economic ecosystems they generate lay the communities and their members, who are essential to initiate, maintain and guarantee the success of these connectivity efforts.\" Source: Building Community Network Policies: A Collaborative Governance towards Enabling Frameworks","title":"What is a Community Network?"},{"location":"faq/why/","text":"Why Have a Community Network? Internet access is a foundational component of many aspects of modern life, nearly as important as electricity and water service. Though internet service is generally available in many areas of the United States, there are still areas that are underserved because of a variety of geographic and socio-economic factors, or simply because traditional internet service providers do not find it profitable to install and maintain the necessary infrastructure to serve some areas with adequate internet. Community networks attempt to address this digital divide by connecting underserved communities. Because a community network is created, managed, and maintained by volunteers, it is able to serve areas that may not have other affordable internet options.","title":"Why have a Community Network?"},{"location":"faq/why/#why-have-a-community-network","text":"Internet access is a foundational component of many aspects of modern life, nearly as important as electricity and water service. Though internet service is generally available in many areas of the United States, there are still areas that are underserved because of a variety of geographic and socio-economic factors, or simply because traditional internet service providers do not find it profitable to install and maintain the necessary infrastructure to serve some areas with adequate internet. Community networks attempt to address this digital divide by connecting underserved communities. Because a community network is created, managed, and maintained by volunteers, it is able to serve areas that may not have other affordable internet options.","title":"Why Have a Community Network?"},{"location":"infrastructure/epc-setup/","text":"Step 1: CoLTE/EPC (LTE Core Network) Setup Our core networks use the CoLTE project maintained by the UW ICTD Lab . For information on how to install and configure CoLTE, visit the tutorial we wrote with them!","title":"Step 1. LTE Core Network Setup"},{"location":"infrastructure/epc-setup/#step-1-colteepc-lte-core-network-setup","text":"Our core networks use the CoLTE project maintained by the UW ICTD Lab . For information on how to install and configure CoLTE, visit the tutorial we wrote with them!","title":"Step 1: CoLTE/EPC (LTE Core Network) Setup"},{"location":"infrastructure/hardware/","text":"Our Hardware This page will be an overview of some of the core pieces of hardware that we use to deploy our sites. This page is in development, please contact us at lcl@seattlecommunitynetwork.org if you would like to learn more about the hardware we use. TODO Network Site Equipment Base Station (eNodeB) Baicells Nova 233 3.5GHz 1W Gen2 More info here Panel Antennas (eNodeB) Alpha Wireless, 3.3-3.8GHz, 2x2 MIMO, 18dBi, +/-45\u00b0, 65\u00b0 More info here Core Network Computer (EPC) Qotom Mini PC Q190G4N S07 Key features: - 4 ethernet ports - designed to be run 24/7 - small and quiet - cheap More info here User Access Devices LTE Consumer Premises Equipment (CPE) Baicells Atom OD04 3.5GHz 14dBi More info here Outdoor WiFi Router Mikrotik OmniTIK 5 PoE ac Outdoor router of choice for NYC Mesh, so it has been tried and tested. Good balance of quality and price. More info here Home WiFi Router TP-Link Archer A5 Router More info here CBRS-Compatible Unlocked Smartphone We purchase refurbished Google Pixel 4 smartphones because they are affordable, provide all necessary smartphone features, and are CBRS-compatible. Note that purchasing CBRS-compatible phones can be a logistical challenge. We've experienced trouble purchasing from vendors that send incorrect models of phones that don't support CBRS band and we had to go back and forth. Test your phones before distributing them! Here is one spot to purchase refurbished phones.","title":"Hardware Overview"},{"location":"infrastructure/hardware/#our-hardware","text":"This page will be an overview of some of the core pieces of hardware that we use to deploy our sites. This page is in development, please contact us at lcl@seattlecommunitynetwork.org if you would like to learn more about the hardware we use.","title":"Our Hardware"},{"location":"infrastructure/hardware/#todo","text":"","title":"TODO"},{"location":"infrastructure/hardware/#network-site-equipment","text":"","title":"Network Site Equipment"},{"location":"infrastructure/hardware/#base-station-enodeb","text":"Baicells Nova 233 3.5GHz 1W Gen2 More info here","title":"Base Station (eNodeB)"},{"location":"infrastructure/hardware/#panel-antennas-enodeb","text":"Alpha Wireless, 3.3-3.8GHz, 2x2 MIMO, 18dBi, +/-45\u00b0, 65\u00b0 More info here","title":"Panel Antennas (eNodeB)"},{"location":"infrastructure/hardware/#core-network-computer-epc","text":"Qotom Mini PC Q190G4N S07 Key features: - 4 ethernet ports - designed to be run 24/7 - small and quiet - cheap More info here","title":"Core Network Computer (EPC)"},{"location":"infrastructure/hardware/#user-access-devices","text":"","title":"User Access Devices"},{"location":"infrastructure/hardware/#lte-consumer-premises-equipment-cpe","text":"Baicells Atom OD04 3.5GHz 14dBi More info here","title":"LTE Consumer Premises Equipment (CPE)"},{"location":"infrastructure/hardware/#outdoor-wifi-router","text":"Mikrotik OmniTIK 5 PoE ac Outdoor router of choice for NYC Mesh, so it has been tried and tested. Good balance of quality and price. More info here","title":"Outdoor WiFi Router"},{"location":"infrastructure/hardware/#home-wifi-router","text":"TP-Link Archer A5 Router More info here","title":"Home WiFi Router"},{"location":"infrastructure/hardware/#cbrs-compatible-unlocked-smartphone","text":"We purchase refurbished Google Pixel 4 smartphones because they are affordable, provide all necessary smartphone features, and are CBRS-compatible. Note that purchasing CBRS-compatible phones can be a logistical challenge. We've experienced trouble purchasing from vendors that send incorrect models of phones that don't support CBRS band and we had to go back and forth. Test your phones before distributing them! Here is one spot to purchase refurbished phones.","title":"CBRS-Compatible Unlocked Smartphone"},{"location":"infrastructure/librenms-manager-setup/","text":"LibreNMS Network Manager Configuration Seattle Community Networks uses SNMP to monitor network nodes. LibreNMS is used for Network Management, Dashboard generation and Alerting. LibreNMS Manager Installation: Install LibreNMS Install and Configure LibreNMS on Ubuntu with nginx Network-Specific Configuration: Change active user to librenms: sudo su - librenms Edit /opt/librenms/config.php: '); $config['auth_mechanism'] = \"mysql\"; # default, other options: ldap, http-auth $config['nets'][] = \"10.0.0.0/24\"; # Replace with your Management Network Subdomain $config['rrd_purge'] = 0; $config['enable_billing'] = 1; $config['show_services'] = 1; As user 'librenms', run /opt/librenms/snmp-scan.php, to scan the configured network for snmp hosts Adding Baicells OS configuration to LibreNMS As user 'librenms' on the librenms server, create the following files and update their contents accordingly: * For OS detection, ~librenms/includes/definitions/rts.yaml: os: rts text: 'Baicells RTS' type: network icon: rts over: - { graph: device_bits, text: 'Device Traffic' } - { graph: device_processor, text: 'CPU Usage' } - { graph: device_mempool, text: 'Memory Usage' } discovery: - sysDescr: - 'CELL' For defining custom RTS OS sensors, ~librenms/includes/definitions/discovery/rts.yaml: mib: BAICELLS-MIB modules: os: hardware: BAICELLS-MIB::hardwareVersion.0 serial: BAICELLS-MIB::sn.0 version: BAICELLS-MIB::softwareVersion.0 sensors: count: data: - oid: ulThroughput num_oid: '.1.3.6.1.4.1.53058.190.7.{{ $index }}' descr: 'Upload Throughput' group: 'Throughput' index: 'ulthroughput.{{ $index }}' - oid: dlThroughput num_oid: '.1.3.6.1.4.1.53058.190.8.{{ $index }}' descr: 'Download Throughput' group: 'Throughput' index: 'dlThroughput.{{ $index }}' - oid: ulPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.9.{{ $index }}' descr: 'Upload PRB Utilization' group: 'Utilization' index: 'ulPrbUtilization{{ $index }}' - oid: dlPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.10.{{ $index }}' descr: 'Download PRB Utilization' group: 'Utilization' index: 'dlPrbUtilization.{{ $index }}' frequency: data: - oid: carrierBwMhz num_oid: '.1.3.6.1.4.1.53058.100.7.{{ $index }}' divisor: 5 descr: 'Carrier Bandwidth' index: 'carrierBwMhz.{{ $index }}' percent: data: - oid: eRABEstablishSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.3.{{ $index }}' descr: 'ERAB Establishment Success Rate' group: 'LTE' index: 'eRABEstablishSuccessRate.{{ $index }}' - oid: hoSuccInterEnbS1Rate num_oid: '.1.3.6.1.4.1.53058.190.4.{{ $index }}' descr: 'Inter MME S1 Handover Success Rate' group: 'LTE' index: 'heSuccInterEnbS1Rate.{{ $index }}' - oid: hoSuccInterEnbRate num_oid: '.1.3.6.1.4.1.53058.190.5.{{ $index }}' descr: 'Inter MME Handover Success Rate' group: 'LTE' index: 'hoSuccInterEnbRate.{{ $index }}' - oid: rrcBuildSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.6.{{ $index }}' descr: 'RRC Build Success Rate' group: 'LTE' index: 'rrcBuildSuccessRate.{{ $index }}' For defining a custom OS class to use Wireless sensors, ~librenms/LibreNMS/OS/Rts.php (note: pay attention to capitalization) getDeviceId(), $oid, 'rts', 1, 'UE Connections') ); } } A nice looking logo, ~librenms/html/images/os/rts.png Download an example Baicells Logo Here Download the baicells mib from this link , and save it to ~librenms/mibs/BAICELLS-MIB (note: no file extension)","title":"Network Monitoring 1. LibreNMS Network Manager Configuration"},{"location":"infrastructure/librenms-manager-setup/#librenms-network-manager-configuration","text":"Seattle Community Networks uses SNMP to monitor network nodes. LibreNMS is used for Network Management, Dashboard generation and Alerting.","title":"LibreNMS Network Manager Configuration"},{"location":"infrastructure/librenms-manager-setup/#librenms-manager-installation","text":"Install LibreNMS Install and Configure LibreNMS on Ubuntu with nginx","title":"LibreNMS Manager Installation:"},{"location":"infrastructure/librenms-manager-setup/#network-specific-configuration","text":"Change active user to librenms: sudo su - librenms Edit /opt/librenms/config.php: '); $config['auth_mechanism'] = \"mysql\"; # default, other options: ldap, http-auth $config['nets'][] = \"10.0.0.0/24\"; # Replace with your Management Network Subdomain $config['rrd_purge'] = 0; $config['enable_billing'] = 1; $config['show_services'] = 1; As user 'librenms', run /opt/librenms/snmp-scan.php, to scan the configured network for snmp hosts","title":"Network-Specific Configuration:"},{"location":"infrastructure/librenms-manager-setup/#adding-baicells-os-configuration-to-librenms","text":"As user 'librenms' on the librenms server, create the following files and update their contents accordingly: * For OS detection, ~librenms/includes/definitions/rts.yaml: os: rts text: 'Baicells RTS' type: network icon: rts over: - { graph: device_bits, text: 'Device Traffic' } - { graph: device_processor, text: 'CPU Usage' } - { graph: device_mempool, text: 'Memory Usage' } discovery: - sysDescr: - 'CELL' For defining custom RTS OS sensors, ~librenms/includes/definitions/discovery/rts.yaml: mib: BAICELLS-MIB modules: os: hardware: BAICELLS-MIB::hardwareVersion.0 serial: BAICELLS-MIB::sn.0 version: BAICELLS-MIB::softwareVersion.0 sensors: count: data: - oid: ulThroughput num_oid: '.1.3.6.1.4.1.53058.190.7.{{ $index }}' descr: 'Upload Throughput' group: 'Throughput' index: 'ulthroughput.{{ $index }}' - oid: dlThroughput num_oid: '.1.3.6.1.4.1.53058.190.8.{{ $index }}' descr: 'Download Throughput' group: 'Throughput' index: 'dlThroughput.{{ $index }}' - oid: ulPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.9.{{ $index }}' descr: 'Upload PRB Utilization' group: 'Utilization' index: 'ulPrbUtilization{{ $index }}' - oid: dlPrbUtilization num_oid: '.1.3.6.1.4.1.53058.190.10.{{ $index }}' descr: 'Download PRB Utilization' group: 'Utilization' index: 'dlPrbUtilization.{{ $index }}' frequency: data: - oid: carrierBwMhz num_oid: '.1.3.6.1.4.1.53058.100.7.{{ $index }}' divisor: 5 descr: 'Carrier Bandwidth' index: 'carrierBwMhz.{{ $index }}' percent: data: - oid: eRABEstablishSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.3.{{ $index }}' descr: 'ERAB Establishment Success Rate' group: 'LTE' index: 'eRABEstablishSuccessRate.{{ $index }}' - oid: hoSuccInterEnbS1Rate num_oid: '.1.3.6.1.4.1.53058.190.4.{{ $index }}' descr: 'Inter MME S1 Handover Success Rate' group: 'LTE' index: 'heSuccInterEnbS1Rate.{{ $index }}' - oid: hoSuccInterEnbRate num_oid: '.1.3.6.1.4.1.53058.190.5.{{ $index }}' descr: 'Inter MME Handover Success Rate' group: 'LTE' index: 'hoSuccInterEnbRate.{{ $index }}' - oid: rrcBuildSuccessRate num_oid: '.1.3.6.1.4.1.53058.190.6.{{ $index }}' descr: 'RRC Build Success Rate' group: 'LTE' index: 'rrcBuildSuccessRate.{{ $index }}' For defining a custom OS class to use Wireless sensors, ~librenms/LibreNMS/OS/Rts.php (note: pay attention to capitalization) getDeviceId(), $oid, 'rts', 1, 'UE Connections') ); } } A nice looking logo, ~librenms/html/images/os/rts.png Download an example Baicells Logo Here Download the baicells mib from this link , and save it to ~librenms/mibs/BAICELLS-MIB (note: no file extension)","title":"Adding Baicells OS configuration to LibreNMS"},{"location":"infrastructure/librenms-setup/","text":"LibreNMS Agent Configuration Adding a New Node to LibreNMS Both the eNodeB and the ePC must be configured individually in order for them to report statistics to the SNMP Manager. Since the eNodeB is not directly accessible from the management VPN, we configure an SNMP proxy on the ePC to pass SNMP statistics to the Management host. ePC SNMP Configuration Install snmpd to the ePC node: $ sudo apt install snmpd Modify /etc/snmp/snmpd.conf: sysLocation sysContact lcl@seattlecommunitynetwork.org sysServices 72 master agentx agentAddress udp:161 com2sec readonly com2sec -Cn ctx_baicells readonly enodeb group readonlygroup v2c readonly view all included .1 access readonlygroup \"\" v2c noauth exact all none none access readonlygroup ctx_baicells v2c noauth prefix all none none proxy -Cn ctx_baicells -v 2c -c private 192.168.151.1 .1.3 This configuration allows us to access SNMP data on the EPC with the standard community string (refer to internal standards documentation). but will proxy the Baicells SNMP data when we send the community string \u2018enodeb\u2019 Update the snmpd service file to automatically restart snmpd on crash: Edit /lib/systemd/system/snmpd.service, modify the 'ExecStart' line, and add the 'ExecReload', 'Restart', and 'RestartSec' lines: [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -LO2w -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target Enable and restart snmpd: Sudo systemctl daemon-reload sudo systemctl enable snmpd sudo systemctl restart snmpd Baicells SNMP configuration Log into the Baicells configuration console: https:// From the left menu, select System Select SNMP Under \u2018SNMP Switch,\u2019 select \u2018Enable\u2019 Configure the following options: Community String: private Contact: lcl@seattlecommunitynetwork.org Location: \\ (String should not have any spaces) Source: Any Adding the Node to LibreNMS If the ePC is running, librenms should be able to auto-discover it. Run this command from a shell on the management host: sudo -u librenms lnms scan LibreNMS should print a status message that it was able to add a new device. When first discovered, the ePC will show up generically as it\u2019s ip address. Edit the hostname, but clicking \u2018Edit Device\u2019 (gear icon): Click the red pencil icon, and change the ip address to the hostname Fill \u2018Overwrite IP\u2019 with the ePC IP address Note: If the IP is not changed to the hostname, you will not be able to add the eNodeB by it\u2019s IP address The Baicells eNB needs to be added manually: From LibreNMS, select Devices and click \u201cAdd Device\u201d Add a new device, with the following configurations: Hostname: Community: \u2018enodeb\u2019 Force Add: On Note: If you receive an error message stating that a device with the specified IP already exists, make sure that you have successfully changed the eNodeB\u2019s hostname per the previous step. Once the device is added, click the \u2018Edit Device\u2019 icon (gear icon) and update the following values: Display name: \\ Overwrite device contact: lcl@seattlecommunitynetwork.org Other helpful notes: Baicells eNB config guide How to SSH into Baicells eNB: SSH using port 27149 (username same as normal web-based login) Convert the MAC address of this eNB to link local address: http://www.sput.nl/internet/ipv6/ll-mac.html","title":"Network Monitoring 2. LibreNMS Agent Configuration"},{"location":"infrastructure/librenms-setup/#librenms-agent-configuration","text":"","title":"LibreNMS Agent Configuration"},{"location":"infrastructure/librenms-setup/#adding-a-new-node-to-librenms","text":"Both the eNodeB and the ePC must be configured individually in order for them to report statistics to the SNMP Manager. Since the eNodeB is not directly accessible from the management VPN, we configure an SNMP proxy on the ePC to pass SNMP statistics to the Management host.","title":"Adding a New Node to LibreNMS"},{"location":"infrastructure/librenms-setup/#epc-snmp-configuration","text":"Install snmpd to the ePC node: $ sudo apt install snmpd Modify /etc/snmp/snmpd.conf: sysLocation sysContact lcl@seattlecommunitynetwork.org sysServices 72 master agentx agentAddress udp:161 com2sec readonly com2sec -Cn ctx_baicells readonly enodeb group readonlygroup v2c readonly view all included .1 access readonlygroup \"\" v2c noauth exact all none none access readonlygroup ctx_baicells v2c noauth prefix all none none proxy -Cn ctx_baicells -v 2c -c private 192.168.151.1 .1.3 This configuration allows us to access SNMP data on the EPC with the standard community string (refer to internal standards documentation). but will proxy the Baicells SNMP data when we send the community string \u2018enodeb\u2019 Update the snmpd service file to automatically restart snmpd on crash: Edit /lib/systemd/system/snmpd.service, modify the 'ExecStart' line, and add the 'ExecReload', 'Restart', and 'RestartSec' lines: [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=network.target ConditionPathExists=/etc/snmp/snmpd.conf [Service] Type=simple ExecStartPre=/bin/mkdir -p /var/run/agentx ExecStart=/usr/sbin/snmpd -LO2w -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target Enable and restart snmpd: Sudo systemctl daemon-reload sudo systemctl enable snmpd sudo systemctl restart snmpd","title":"ePC SNMP Configuration"},{"location":"infrastructure/librenms-setup/#baicells-snmp-configuration","text":"Log into the Baicells configuration console: https:// From the left menu, select System Select SNMP Under \u2018SNMP Switch,\u2019 select \u2018Enable\u2019 Configure the following options: Community String: private Contact: lcl@seattlecommunitynetwork.org Location: \\ (String should not have any spaces) Source: Any","title":"Baicells SNMP configuration"},{"location":"infrastructure/librenms-setup/#adding-the-node-to-librenms","text":"If the ePC is running, librenms should be able to auto-discover it. Run this command from a shell on the management host: sudo -u librenms lnms scan LibreNMS should print a status message that it was able to add a new device. When first discovered, the ePC will show up generically as it\u2019s ip address. Edit the hostname, but clicking \u2018Edit Device\u2019 (gear icon): Click the red pencil icon, and change the ip address to the hostname Fill \u2018Overwrite IP\u2019 with the ePC IP address Note: If the IP is not changed to the hostname, you will not be able to add the eNodeB by it\u2019s IP address The Baicells eNB needs to be added manually: From LibreNMS, select Devices and click \u201cAdd Device\u201d Add a new device, with the following configurations: Hostname: Community: \u2018enodeb\u2019 Force Add: On Note: If you receive an error message stating that a device with the specified IP already exists, make sure that you have successfully changed the eNodeB\u2019s hostname per the previous step. Once the device is added, click the \u2018Edit Device\u2019 icon (gear icon) and update the following values: Display name: \\ Overwrite device contact: lcl@seattlecommunitynetwork.org","title":"Adding the Node to LibreNMS"},{"location":"infrastructure/librenms-setup/#other-helpful-notes","text":"Baicells eNB config guide How to SSH into Baicells eNB: SSH using port 27149 (username same as normal web-based login) Convert the MAC address of this eNB to link local address: http://www.sput.nl/internet/ipv6/ll-mac.html","title":"Other helpful notes:"},{"location":"infrastructure/peering/","text":"Public ASN Peering Local Connectivity Lab operates AS54429 Our peering Policy is Yes Please contact us to peer with our network. Note this network is our public ASN, not the Seattle Community Network itself. If you would like to join the network visit our connect page. Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. Learn more on our FAQ . Peering Policy Local Connectivity Lab has an open peering policy. We have no requirements in terms of traffic, size, support/SLA, etc. We operate both IPv4 and IPv6. Peering via both protocols is appreciated. Locations Building Address Ports Westin 2001 6th Avenue, Seattle, WA 1G / 10G Exchanges Exchange City IPv4 IPv6 ASNs Routes Speed Seattle Internet Exchange (SIX) Seattle, WA 206.81.81.150 2001:504:16::d49d 336 ~192K 10G Peering Data ASN: 54429 Peering Contact: tech@seattlecommunitynetwork.org PeerDB Page: https://as54429.peeringdb.com As we are a non-profit, please consider providing as many routes as possible, including upstream or other routes.","title":"Public ASN Peering"},{"location":"infrastructure/peering/#public-asn-peering","text":"","title":"Public ASN Peering"},{"location":"infrastructure/peering/#local-connectivity-lab-operates-as54429","text":"","title":"Local Connectivity Lab operates AS54429"},{"location":"infrastructure/peering/#our-peering-policy-is-yes","text":"Please contact us to peer with our network. Note this network is our public ASN, not the Seattle Community Network itself. If you would like to join the network visit our connect page. Seattle Community Network (SCN) is a community network dedicated to providing fair access to underserved communities all across the Puget Sound. Learn more on our FAQ .","title":"Our peering Policy is Yes"},{"location":"infrastructure/peering/#peering-policy","text":"Local Connectivity Lab has an open peering policy. We have no requirements in terms of traffic, size, support/SLA, etc. We operate both IPv4 and IPv6. Peering via both protocols is appreciated.","title":"Peering Policy"},{"location":"infrastructure/peering/#locations","text":"Building Address Ports Westin 2001 6th Avenue, Seattle, WA 1G / 10G","title":"Locations"},{"location":"infrastructure/peering/#exchanges","text":"Exchange City IPv4 IPv6 ASNs Routes Speed Seattle Internet Exchange (SIX) Seattle, WA 206.81.81.150 2001:504:16::d49d 336 ~192K 10G","title":"Exchanges"},{"location":"infrastructure/peering/#peering-data","text":"ASN: 54429 Peering Contact: tech@seattlecommunitynetwork.org PeerDB Page: https://as54429.peeringdb.com As we are a non-profit, please consider providing as many routes as possible, including upstream or other routes.","title":"Peering Data"},{"location":"infrastructure/proxmox-vaultwarden-deployment/","text":"Deployed by: Esther Jang, Paul Phillion, Rudra Singh Section 1: What is Proxmox? Proxmox VE (Virtual Environment) is an open-source server management platform designed to deploy and manage virtual machines (VMs) and containers. It integrates KVM hypervisor and LXC containers, enabling users to manage virtual infrastructure through a web-based interface. Section 2: Access Requirements for Proxmox VE at Seattle Community Network To submit a request for a SCN self-hosted Proxmox VM on our private cloud, please fill out this form . If you are working on a project for SCN and need access to the Proxmox VE, please continue reading. Next, you will need access to the OpenVPN. Proxmox VE can only be accessed on the VPN. Specific details can be obtained from the SCN discord. Once connected to the VPN, a specific IP will be provided for you to access the Proxmox VE, where you can input your credentials. Section 3: Setting up your VM Install SSH Install Keys Test SSH CLI Section 4: SSH Troubleshooting Please let the SCN discord know if you have trouble SSH'ing in. A useful command during setup was sudo ufw status . If it is active, use ufw disable . The expected status should be inactive. If that still doesn\u2019t work, try restarting the VM from the Proxmox VE. Section 5: Beginning Deployment: Vaultwarden docker pull vaultwarden/server:latest docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest Section 6: Docker Compose Create a Docker Compose file: version: \"3\" services: vaultwarden: container_name: vaultwarden hostname: vaultwarden9 ports: - \"127.0.0.1:8080:80\" environment: - LOG_FILE=/log/access.log - LOG_LEVEL=info - EXTENDED_LOGGING=true image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/vw-data:/data - /var/log/vw:/log To start and run your container application in detached mode, use: docker-compose up -d docker-compose start docker-compose stop docker-compose restart Section 7: Azure DNS For this deployment, we're utilizing a public IP address. This address must be configured within Azure DNS to point to our chosen domain name. Navigate to Home - Microsoft Azure with your account. Open \u201cDNS zones\u201d. If you were using a private IP, you would use \u201cPrivate DNS zones\u201d. We will be creating a subdomain under seattlecommunitynetwork.org. Click on that, and under DNS management, click recordsets, and click add. Insert the beginning of the subdomain name, which in our case is \u201cvaultwarden\u201d. Below, under IP address, insert your IP, and create your new subdomain. Section 8: Enabling Nginx sudo apt update sudo apt install nginx sudo systemctl enable nginx sudo systemctl start nginx Next, go to /etc/nginx/sites-enabled/default . Delete everything inside default and paste this: # The `upstream` directives ensure that you have a http/1.1 connection # This enables the keepalive option and better performance # # Define the server IP and ports here. upstream vaultwarden-default { zone vaultwarden-default 64k; server 127.0.0.1:8080; keepalive 2; } # Needed to support websocket connections # See: https://nginx.org/en/docs/http/websocket.html # Instead of \"close\" as stated in the above link we send an empty value. # Else all keepalive connections will not work. map $http_upgrade $connection_upgrade { default upgrade; '' \"\"; } # Redirect HTTP to HTTPS server { listen 80; listen [::]:80; server_name vaultwarden.seattlecommunitynetwork.org; if ($host = vaultwarden.seattlecommunitynetwork.org) { return 301 https://$host$request_uri; } return 404; } server { # For older versions of nginx appened http2 to the listen line after ssl and remove `http2 on` listen 443 ssl; listen [::]:443 ssl; # http2 on; server_name vaultwarden.seattlecommunitynetwork.org; # Specify SSL Config when needed ssl_certificate /etc/path...; ssl_certificate_key /etc/path...; ssl_trusted_certificate /etc/path...; client_max_body_size 525M; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://vaultwarden-default; } # Optionally add extra authentication besides the ADMIN_TOKEN # Remove the comments below `#` and create the htpasswd_file to have it active # #location /admin { # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/ #auth_basic \"Administrator's Area\"; #3auth_basic_user_file /path/to/htpasswd_file; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #proxy_pass http://vaultwarden-default; } } Section 9: Obtain SSL Certificates sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d vaultwarden.seattlecommunitynetwork.org Certbot will modify your Nginx configuration to handle HTTPS and redirect from HTTP to HTTPS. Ensure that you copy the file paths provided at the conclusion of the certbot process into the default nginx configuration file, replacing the corresponding comments with these paths. Section 10: Ensure Everything is Running sudo systemctl status nginx Section 11: Additional Features Enabling admin panel: Go back to /etc/nginx/sites-enabled/default and uncomment the admin section at the bottom. Follow directions at Nginx Admin Guide to encrypt your admin password as a .env file (preferably using argon CLI). Once done, make sure you create a .env file in the directory where the compose file is with VAULTWARDEN_ADMIN_TOKEN=[insert your hashed admin token] . Then in your compose, add these two lines under environment: - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} - DOMAIN=https://vaultwarden.seattlecommunitynetwork.org Restart the container and try logging into https://vaultwarden.seattlecommunitynetwork.org/admin . Once logged in, SMTP and 2FA enabling settings can be configured on the home page. Section 12: Data Backup Enabling backups for Vaultwarden is a simple process. Please review the attached backup bash script, which facilitates the transfer of Vaultwarden data to another virtual machine. Additionally, there is a cleanup bash script designed to retain only the most recent file in the other VM, deleting all others. Feel free to modify the scripts as necessary to suit your specific requirements. Backup script: #!/bin/bash docker-compose down datestamp=$(date +%m-%d-%Y) zip -9 -r /home/scn/backups/${datestamp}.zip /opt/vw-data* scp -i ~/.ssh-comm/id_rsa /home/scn/backups/${datestamp}.zip azureuser@[IP address]:~/backups/ docker-compose up -d Cleanup Script: #!/bin/bash # Define the directory containing backup files backup_dir=~/backups # Go to the backup directory cd \"$backup_dir\" || exit # Find and delete older backup files (excluding the latest day) find . -type f -name '*.zip' ! -mtime -1 -exec rm {} + # Exit exit 0 Section 13: Using the Backup To restore a data backup to the original virtual machine, simply unzip the file and delete the existing contents of /opt/vw-data . Then, transfer the contents of your zip file into this directory. Perform a quick restart of the container, and you will have successfully restored the version of the backup you selected.","title":"Proxmox Deployment Guide - Vaultwarden"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#deployed-by-esther-jang-paul-phillion-rudra-singh","text":"","title":"Deployed by: Esther Jang, Paul Phillion, Rudra Singh"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-1-what-is-proxmox","text":"Proxmox VE (Virtual Environment) is an open-source server management platform designed to deploy and manage virtual machines (VMs) and containers. It integrates KVM hypervisor and LXC containers, enabling users to manage virtual infrastructure through a web-based interface.","title":"Section 1: What is Proxmox?"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-2-access-requirements-for-proxmox-ve-at-seattle-community-network","text":"To submit a request for a SCN self-hosted Proxmox VM on our private cloud, please fill out this form . If you are working on a project for SCN and need access to the Proxmox VE, please continue reading. Next, you will need access to the OpenVPN. Proxmox VE can only be accessed on the VPN. Specific details can be obtained from the SCN discord. Once connected to the VPN, a specific IP will be provided for you to access the Proxmox VE, where you can input your credentials.","title":"Section 2: Access Requirements for Proxmox VE at Seattle Community Network"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-3-setting-up-your-vm","text":"","title":"Section 3: Setting up your VM"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#install-ssh","text":"","title":"Install SSH"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#install-keys","text":"","title":"Install Keys"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#test-ssh-cli","text":"","title":"Test SSH CLI"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-4-ssh-troubleshooting","text":"Please let the SCN discord know if you have trouble SSH'ing in. A useful command during setup was sudo ufw status . If it is active, use ufw disable . The expected status should be inactive. If that still doesn\u2019t work, try restarting the VM from the Proxmox VE.","title":"Section 4: SSH Troubleshooting"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-5-beginning-deployment-vaultwarden","text":"docker pull vaultwarden/server:latest docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest","title":"Section 5: Beginning Deployment: Vaultwarden"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-6-docker-compose","text":"Create a Docker Compose file: version: \"3\" services: vaultwarden: container_name: vaultwarden hostname: vaultwarden9 ports: - \"127.0.0.1:8080:80\" environment: - LOG_FILE=/log/access.log - LOG_LEVEL=info - EXTENDED_LOGGING=true image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/vw-data:/data - /var/log/vw:/log To start and run your container application in detached mode, use: docker-compose up -d docker-compose start docker-compose stop docker-compose restart","title":"Section 6: Docker Compose"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-7-azure-dns","text":"For this deployment, we're utilizing a public IP address. This address must be configured within Azure DNS to point to our chosen domain name. Navigate to Home - Microsoft Azure with your account. Open \u201cDNS zones\u201d. If you were using a private IP, you would use \u201cPrivate DNS zones\u201d. We will be creating a subdomain under seattlecommunitynetwork.org. Click on that, and under DNS management, click recordsets, and click add. Insert the beginning of the subdomain name, which in our case is \u201cvaultwarden\u201d. Below, under IP address, insert your IP, and create your new subdomain.","title":"Section 7: Azure DNS"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-8-enabling-nginx","text":"sudo apt update sudo apt install nginx sudo systemctl enable nginx sudo systemctl start nginx Next, go to /etc/nginx/sites-enabled/default . Delete everything inside default and paste this: # The `upstream` directives ensure that you have a http/1.1 connection # This enables the keepalive option and better performance # # Define the server IP and ports here. upstream vaultwarden-default { zone vaultwarden-default 64k; server 127.0.0.1:8080; keepalive 2; } # Needed to support websocket connections # See: https://nginx.org/en/docs/http/websocket.html # Instead of \"close\" as stated in the above link we send an empty value. # Else all keepalive connections will not work. map $http_upgrade $connection_upgrade { default upgrade; '' \"\"; } # Redirect HTTP to HTTPS server { listen 80; listen [::]:80; server_name vaultwarden.seattlecommunitynetwork.org; if ($host = vaultwarden.seattlecommunitynetwork.org) { return 301 https://$host$request_uri; } return 404; } server { # For older versions of nginx appened http2 to the listen line after ssl and remove `http2 on` listen 443 ssl; listen [::]:443 ssl; # http2 on; server_name vaultwarden.seattlecommunitynetwork.org; # Specify SSL Config when needed ssl_certificate /etc/path...; ssl_certificate_key /etc/path...; ssl_trusted_certificate /etc/path...; client_max_body_size 525M; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://vaultwarden-default; } # Optionally add extra authentication besides the ADMIN_TOKEN # Remove the comments below `#` and create the htpasswd_file to have it active # #location /admin { # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/ #auth_basic \"Administrator's Area\"; #3auth_basic_user_file /path/to/htpasswd_file; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #proxy_pass http://vaultwarden-default; } }","title":"Section 8: Enabling Nginx"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-9-obtain-ssl-certificates","text":"sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d vaultwarden.seattlecommunitynetwork.org Certbot will modify your Nginx configuration to handle HTTPS and redirect from HTTP to HTTPS. Ensure that you copy the file paths provided at the conclusion of the certbot process into the default nginx configuration file, replacing the corresponding comments with these paths.","title":"Section 9: Obtain SSL Certificates"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-10-ensure-everything-is-running","text":"sudo systemctl status nginx","title":"Section 10: Ensure Everything is Running"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-11-additional-features","text":"Enabling admin panel: Go back to /etc/nginx/sites-enabled/default and uncomment the admin section at the bottom. Follow directions at Nginx Admin Guide to encrypt your admin password as a .env file (preferably using argon CLI). Once done, make sure you create a .env file in the directory where the compose file is with VAULTWARDEN_ADMIN_TOKEN=[insert your hashed admin token] . Then in your compose, add these two lines under environment: - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} - DOMAIN=https://vaultwarden.seattlecommunitynetwork.org Restart the container and try logging into https://vaultwarden.seattlecommunitynetwork.org/admin . Once logged in, SMTP and 2FA enabling settings can be configured on the home page.","title":"Section 11: Additional Features"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-12-data-backup","text":"Enabling backups for Vaultwarden is a simple process. Please review the attached backup bash script, which facilitates the transfer of Vaultwarden data to another virtual machine. Additionally, there is a cleanup bash script designed to retain only the most recent file in the other VM, deleting all others. Feel free to modify the scripts as necessary to suit your specific requirements. Backup script: #!/bin/bash docker-compose down datestamp=$(date +%m-%d-%Y) zip -9 -r /home/scn/backups/${datestamp}.zip /opt/vw-data* scp -i ~/.ssh-comm/id_rsa /home/scn/backups/${datestamp}.zip azureuser@[IP address]:~/backups/ docker-compose up -d Cleanup Script: #!/bin/bash # Define the directory containing backup files backup_dir=~/backups # Go to the backup directory cd \"$backup_dir\" || exit # Find and delete older backup files (excluding the latest day) find . -type f -name '*.zip' ! -mtime -1 -exec rm {} + # Exit exit 0","title":"Section 12: Data Backup"},{"location":"infrastructure/proxmox-vaultwarden-deployment/#section-13-using-the-backup","text":"To restore a data backup to the original virtual machine, simply unzip the file and delete the existing contents of /opt/vw-data . Then, transfer the contents of your zip file into this directory. Perform a quick restart of the container, and you will have successfully restored the version of the backup you selected.","title":"Section 13: Using the Backup"},{"location":"infrastructure/sas-setup/","text":"Step 2: eNodeB and SAS Setup Introduction Despite CBRS being a relatively open frequency band, the processes for spectrum access are still somewhat opaque and require significant capital investment and/or ISP-level resources to set up. To clarify this process, here\u2019s a step by step walkthrough tutorial of the setup of a Baicells eNodeB (eNB) base station running in the Citizen\u2019s Broadband Radio Service (CBRS) spectrum band (or band 48). Before following this tutorial, you should have completed the setup of a LTE Evolved Packet Core (EPC) to control your eNB, for which the setup of an open source version based on open5gs is outlined in this tutorial . I. Get set up with a Spectrum Access System (SAS) A. Why get set up with a SAS? Current FCC regulations require all CBRS equipment (called a CBSD) to be registered on a Spectrum Access System (SAS) that coordinates all spectrum assignments and ensures that no transmissions interfere with each other. This will likely require a commercial agreement with a SAS provider such as Google, Federated Wireless, etc. This tutorial uses the Google SAS. B. CPI License At least one member of your team will require \u201cCertified Professional Installer\u201d (CPI) training and license in order to hold legal responsibility for and sign off on device installations. Most SAS providers will offer training at about $500 for both an online training course and the certification exam. If you aren\u2019t able to get someone on your team certified, be sure to collaborate with a CPI! Feel free to contact us at the Local Connectivity Lab if you need support for your community project in this regard, and we can figure out what is feasible. The following are some links and helpful notes about this process: * https://wifidevan.wordpress.com/cbrs-certified-professional-installer-cpi-study-notes/ * https://alliancecorporation.ca/webinars/webinars-webinars/cbrs-for-beginners-part-2-by-commscope/ * https://cbrs.wirelessinnovation.org/acronyms C. SAS Pricing Agreements For Google, the price options provided us in summer 2020 were: Fixed Wireless SAS services are billed per link/household so you pay for each CPE (Customer Premises Equipment) CBSD registered with SAS. CBSDs that operate as base stations are free of charge. Price Per Customer Link $2.25/month. Mobility/Private LTE (price is based on CBSD categoris) Category A CBSD max transmit capability: 30 dBm/10 MHz = 20 dBm/MHz or \u201c1 Watt\u201d mounted under 6m Height Above Average Terrain measured 3-16 km away from site $2.67/month Category B CBSD max transmit capability: Maximum EIRP of 47 dBm/10 MHz = 37 dBm/MHz or \u201c50 Watt\" $13.33/month. D. SAS Registration CBSDs must register their transmit capabilities with the SAS using either the \u201cone-step\u201d or \u201cmulti-step\u201d process. The one-step process requires you to input all installation parameters and sign them with the CPI certificate all on the base station itself, or via a cloud domain proxy such as used by Baicells. Not all base stations support this and the interfaces for doing so might vary widely, so \u201cmulti-step\u201d is typically recommended. II. Register device in SAS portal This tutorial will be walking through steps following the specifics of the Google SAS portal interface, but the steps should be generalizable to other SAS portals. A. Once you have an account on an SAS service, register your devices on their portal or dashboard. The Google SAS portal can be found at: https://wirelessconnectivity.google.com/sas/ B. Our Setup Our test setup in the lab includes: 1W Baicells Nova 233 base station in the CBRS band mounted on the 6th floor balcony of our UW computer science building. Alpha Wireless 18 dBi-gain panel antenna with a beamwidth of 65 degrees (model AW3014-T4), mounted straight ahead and not tilted down. C. Example Configuration An example configuration for this setup is shown below. The configuration screen is a right-hand sidebar next to the map view, hence the unwieldy aspect ratio. Explanation of parameters: CBSD Category (A or B): Defined by rules in Section I.C above User ID Specified by the SAS provider when you register FCC ID and Serial Number: Both the radio and antenna model must be pre-authorized for use with CBRS by the FCC. The FCC ID is used to identify this approved device type. The serial number specifies the exact device identity. Both can usually be found on the outside of the device (circled in image below). Beamforming Gain, Beamwidth Based on antenna specs in II.B EIRP Effective Isotropic Radiated Power of your system including both the base station radio and antenna. For a Cat B CBSD, this must be 46 dBm/10 MHz=36 dBm/MHz or lower. Calculate this value by adding the max transmit power (actually power density per MHz) of the base station, in our case 28 dBm, to the antenna beamforming gain, in our case 18 dBi; 28+18=36 dBm/MHz. For the units requested by the Google interface, add 10 to this value to specify power per 10 MHz instead of per MHz. Height Specified in terms of height Above Ground Level (AGL) which you can measure using a rangefinder/ measuring tape/ building plan, or in height Above Mean Sea Level (AMSL). Not in terms of HAAT as in the Cat A/B definition. Must be accurate to within 3 m. Azimuth Refers to the compass heading/ direction that the antenna is pointing (set this to 0 for an omnidirectional antenna). This FCC tool is extremely helpful for calculating the azimuth based on the antenna\u2019s gps location and that of a structure you are pointing it at. You can get these GPS coordinates via Google Maps or Google Earth. Air Interface E_UTRA is the LTE radio standard used by our Baicells box. The only \u201csupported spec\u201d currently available for Baicells is FFS (according to a forum post, linked here). Location: In the Google interface, set the site location in GPS coordinates under the tab labeled with the map pin icon. (not shown) Parameters under \"CBSD Info\" Call Sign As far as I can tell, this can be any reasonable alphanumeric string as long as it is unique and matches the value of the \u201ccall sign\u201d parameter as sent over by the eNB or domain proxy. You will set this in the SAS interface as well as either the eNB or Baicells Cloud Core (they all need to match). Others These should match the settings with the same name on the eNB\u2019s local management portal, shown on the \u201cBasic Info\u201d page in section IV.A below. D. CPI Signature When the parameters are all filled out, click the big red \u201cReady for CPI\u201d button at the bottom of the panel (not shown here). On the CPI\u2019s version of the interface, it will provide a place to \u201csign\u201d the configuration with their CPI certificate, which they will upload to the interface. This must happen before the device can get a spectrum grant. E. Status Tab After the CPI signs the eNB configuration, under the \u201cStatus\u201d tab (visible in the config panel), you should see \u201cNot yet Registered\u201d (or a similar message) because the eNB has not checked in to the Google SAS yet with its matching parameters to complete the multi-step process. If something has otherwise gone wrong, you\u2019ll see an error message here. F. Other helpful links Google CBSD registration and deregistration Elevation finder tool with map III. Steps in Baicells Cloud interface A. Make a Baicells OMC account. Due to Baicells\u2019 use of a \u201cdomain proxy\u201d for their SAS requests, you will need to make a new user account in the Baicells Operators Management Console (OMC): https://cloudcore.baicells.com:4443/ This is distinct from their paid \u201cCloud Core\u201d service which we will not be using in this tutorial, although the management portal is the same. B. Take note of the CloudKey Once you have made an account, note the 6-letter \u201cCloudKey\u201d in the upper right corner of the screen (circled in red). This will need to be inputted into the local eNB management portal for the eNB to check into the Cloud OMC. On your version of this portal, if you\u2019re doing this for the first time, you shouldn\u2019t see any eNBs already present. C. Set your SAS service provider. Navigate to Advance\u2192SAS in the left hand menu, and then click the gear icon on the upper right corner, which has the hover text \u201cSettings.\u201d IV. Steps in Baicells management interface A. Local Management Portal The Baicells eNodeB (eNB) is best managed through the browser-based management portal; the current command line interface is accessible but extremely limited. The default IP address of the management portal (and that of most Baicells equipment I\u2019ve seen) is 192.168.150.1, and the default login credentials are admin/admin. I would recommend changing the admin login credentials to be more secure. Connect your computer to the eNB via Ethernet, and navigate to this IP address in your browser (using http://192.168.150.1, not https). Baicells Initial Login Screen: BTS Info\u2192\u201cBasic Info\u201d Page visible upon login: B. Upgrade firmware Upgrade the firmware to the latest firmware version that supports SAS functionality, or verify that it is already up to date. You can check the official firmware page under the correct eNB model. The Nova 233 CBRS small cell we\u2019re using is model mBS1105. The latest firmware version after which SAS is officially supported is BaiBS_RTS_3.6.6.IMG (as of Feb 2021), for which the direct download is available here . Do not skip this step, otherwise none of the following steps will work right. C. Get everything connected Once the firmware is upgraded, you will want to get the eNB connected to your local LTE core network (EPC) as well as to the Internet so it can contact the necessary SAS infrastructure. 1. Configure Internet Access (WAN) Navigate to the Network\u2192WAN/LAN/VLAN tab on the left hand menu. We will set the WAN interface IP address to 192.168.151.1, since the Baicells console requires (for whatever reason) a different subnet for the WAN as opposed to the LAN. Then we will connect the eNB to an Ethernet port on the EPC that has the IP address 192.168.151.2 (as set up in our previous tutorial), which will act as the eNB\u2019s Internet gateway. Don\u2019t forget to hit \u201cSave\u201d after each change you make in this interface. 2. Check Internet access At this point, if the EPC is configured correctly to pass eNB traffic to the Internet, the eNB should be able to ping an arbitrary IP address. To test this, navigate to the Network\u2192Diagnostics tab on the left hand menu and select \u201cPing\u201d under the \u201cMethod of Diagnostics\u201d dropdown menu. Set the \u201cTarget IP Domain\u201d to be a highly reachable IP address on the Internet such as 1.1.1.1, which is the CloudFlare DNS server. Press \u201cImplement.\u201d If the result is \u201cFail!\u201d as in the screenshot, there is likely something wrong with your eNB\u2019s Internet connection through the EPC; you should fix this issue before continuing. 3. Reboot as needed If a message appears that the eNB needs a reboot after the new settings are saved, navigate to the Reboot tab in the left hand menu and perform the reboot (Warm Reset is fine). 4. Attach to Baicells OMC To configure the eNB to talk to the OMC as discussed in the prior section, navigate to the BTS Setting\u2192Management Server tab in the management console and enter the CloudKey. Within a few minutes, the eNB should appear in your Baicells Cloud OMC console, and the \u201cBasic Info\u201d page should show that the OMC is \u201cConnected.\u201d 5. Disable IPsec For our purposes we will not be using IPsec between our EPC and eNB; the default IPSec configured is used for the Baicells Cloud EPC which we are not using. Navigate to the Network\u2192\u201cMME&IPSec Binding\u201d menu tab and set \u201cIPSec Status\u201d to \u201cDisable.\u201d You may also delete the IPSec tunnels as shown below. 6. Disable GPS Sync when testing indoors. Navigate to the \u201cBTS Setting\u201d\u2192\u201cSync Setting\u201d menu and disable both \u201cForced Sync\u201d and \u201cGPS Sync Switch,\u201d in case you need to work with the base station in a location where you don\u2019t have a strong GPS signal. Some base stations will not start up normally or attach to the EPC unless they get a GPS signal, and we should avoid this behavior. 7. Change the MME settings Change the MME settings. Since we are using our local EPC, we will need to change the MME settings to reflect our MME\u2019s IP address, on which it is listening for eNBs to attach, as well as other configurations. Navigate to the BTS Info\u2192Quick Setting tab on the left hand menu. Disable RF You should set the \u201cRF Status\u201d setting to \u201cDisable\u201d before you change the MME IP, because attaching to the MME will normally cause the eNB\u2019s radio to turn on. Since we have not enabled the eNB to ask for spectrum coordinated by the SAS yet, turning on the radio may cause unwanted interference on someone else\u2019s network. PLMN setting Remove the existing \u201cPLMN ID\u201d (by clicking the trash can symbol) and set it to the value that you have configured in your EPC. In our networks, we use \u201c91054\u201d as our PLMN, so add this as a \u201cPrimary\u201d and \u201cNotReserved\u201d PLMN by entering the number in the text box and clicking the \u201c+\u201d button. MME IP address Remove the existing MME IP associated with the old PLMN. Add the new MME IP address, in our case 192.168.150.2, by entering it in the text box and clicking \u201c+\u201d. This MME IP should be associated with the newly added PLMN by default. Save the changes and reboot the eNB (Warm Reset); after the reboot has finished (within a few minutes), the eNB should attach to the MME. If you navigate to BTS Info\u2192Basic Info, you should see the MME Status change from \u201cNot Connected\u201d to \u201cConnected.\u201d If you are looking at the MME logs on the EPC, you will also see the record that an eNB has attached. 8. Enable SAS SAS should only be enabled after successfully attaching the eNB to the MME. Unfortunately, when SAS is enabled, the eNB will not attach to the MME unless it has a currently valid authorization to transmit on a certain frequency. However, until it is attached to an MME, the Baicells Cloud OMC will not provide it this authorization. So we need to have SAS disabled first with the RF also disabled, attach the eNB to the MME, and then enable SAS. Choose \u201cMulti-step\u201d under \u201cSAS Registration Type,\u201d as specified in Section I.E. Also choose \u201cB\u201d under \u201ccategory,\u201d and write in the other parameters to match the ones with the same name in the Google SAS configuration. After you click \u201cSave,\u201d SAS should be enabled immediately. You should see the SAS enabled status change in the Baicells Cloud OMC. If all goes smoothly, your device should get an authorization to transmit within a few minutes and the radio should turn on! 9. Check Baicells CLOUD OMC to debug issues You can check the status of the SAS authorization process in the Cloud OMC. Here you can find logs (upper right corner of SAS screen, shown in the screenshot below) with any error messages that may have occurred in the process. Errors can be caused by invalid or non-matching parameter values, lack of CPI signature, lack of spectrum availability, etc. In more difficult cases, after device registration the SAS may not respond to spectrum inquiries without sending any clear error messages. I have encountered this scenario when requesting spectrum around midnight, which may have been caused by brief database unavailability during the daily \u201cSAS Sync\u201d or IAP. My recommendation is to avoid requesting a new spectrum grant after 11 pm PST. If you change anything about the equipment used on site or the location/orientation of the equipment, you need to change the SAS registration, have it re-signed by the CPI, and use the Baicells OMC to re-request a new spectrum authorization- this process is described in the following section. V. How to change location, antenna properties, etc. after deployment As an example, this section will show how you would change the equipment\u2019s location upon moving from test site to deployment site. Get the new GPS location either manually using Google Maps/Earth, or automatically using Baicells OMC\u2019s GPS reading for the eNB if available. Google SAS steps In the upper right hand corner of the Google SAS configuration for the deployed equipment (long narrow right side panel for a particular site), press the unlock button (shaped like a padlock) to make the configuration editable. To edit the site location, click on the map pin icon in the upper left corner of this same right hand configuration panel to enter the location panel. Enter the new GPS coordinates in the box. After your changes, lock the site configuration again. (If the red \u201cReady for CPI\u201d button appears again at the bottom of the main configuration panel, go ahead and click it to prompt the CPI to sign.) You may have to wait a few minutes or hours for the changes to sync to the CPI\u2019s SAS database view. If after a while the CPI still cannot see the location change, ask them to enter the new GPS coordinates in their own interface and re-sign the configuration. Baicells Cloud OMC steps On the Baicells OMC, navigate to the Advance\u2192SAS screen where you can see the list of CBRS devices and their SAS status. Click on the 3 dots ( \u2807) symbol before the serial number for a particular device and click on \u201cProcedure\u201d to enter the SAS procedure screen. On the Procedure screen, you can see the most recent SAS logs, relinquish and re-request active spectrum authorizations, or de-register and re-register devices. First click on the \u201cAuthorized\u201d icon and click on the \u201cRelinquishment req\u201d button to relinquish the current spectrum authorization. Then the latter two icons will become greyed out, but the device will remain registered. We will need to fully de-register and re-register the device with the new parameters. Click the \u201cRegistered\u201d icon and then the \u201cDe-register\u201d button when it appears to de-register the device. Once the device is in the \u201cUnregistered\u201d state, click the \u201cUnregistered\u201d icon and then click the \u201cRegister req\u201d button when it appears. If all goes well, the device should re-register, and also request and receive a new grant (completing the full procedure) within a few moments.","title":"Step 2. eNodeB and SAS Setup"},{"location":"infrastructure/sas-setup/#step-2-enodeb-and-sas-setup","text":"","title":"Step 2: eNodeB and SAS Setup"},{"location":"infrastructure/sas-setup/#introduction","text":"Despite CBRS being a relatively open frequency band, the processes for spectrum access are still somewhat opaque and require significant capital investment and/or ISP-level resources to set up. To clarify this process, here\u2019s a step by step walkthrough tutorial of the setup of a Baicells eNodeB (eNB) base station running in the Citizen\u2019s Broadband Radio Service (CBRS) spectrum band (or band 48). Before following this tutorial, you should have completed the setup of a LTE Evolved Packet Core (EPC) to control your eNB, for which the setup of an open source version based on open5gs is outlined in this tutorial .","title":"Introduction"},{"location":"infrastructure/sas-setup/#i-get-set-up-with-a-spectrum-access-system-sas","text":"","title":"I. Get set up with a Spectrum Access System (SAS)"},{"location":"infrastructure/sas-setup/#a-why-get-set-up-with-a-sas","text":"Current FCC regulations require all CBRS equipment (called a CBSD) to be registered on a Spectrum Access System (SAS) that coordinates all spectrum assignments and ensures that no transmissions interfere with each other. This will likely require a commercial agreement with a SAS provider such as Google, Federated Wireless, etc. This tutorial uses the Google SAS.","title":"A. Why get set up with a SAS?"},{"location":"infrastructure/sas-setup/#b-cpi-license","text":"At least one member of your team will require \u201cCertified Professional Installer\u201d (CPI) training and license in order to hold legal responsibility for and sign off on device installations. Most SAS providers will offer training at about $500 for both an online training course and the certification exam. If you aren\u2019t able to get someone on your team certified, be sure to collaborate with a CPI! Feel free to contact us at the Local Connectivity Lab if you need support for your community project in this regard, and we can figure out what is feasible. The following are some links and helpful notes about this process: * https://wifidevan.wordpress.com/cbrs-certified-professional-installer-cpi-study-notes/ * https://alliancecorporation.ca/webinars/webinars-webinars/cbrs-for-beginners-part-2-by-commscope/ * https://cbrs.wirelessinnovation.org/acronyms","title":"B. CPI License"},{"location":"infrastructure/sas-setup/#c-sas-pricing-agreements","text":"For Google, the price options provided us in summer 2020 were: Fixed Wireless SAS services are billed per link/household so you pay for each CPE (Customer Premises Equipment) CBSD registered with SAS. CBSDs that operate as base stations are free of charge. Price Per Customer Link $2.25/month. Mobility/Private LTE (price is based on CBSD categoris) Category A CBSD max transmit capability: 30 dBm/10 MHz = 20 dBm/MHz or \u201c1 Watt\u201d mounted under 6m Height Above Average Terrain measured 3-16 km away from site $2.67/month Category B CBSD max transmit capability: Maximum EIRP of 47 dBm/10 MHz = 37 dBm/MHz or \u201c50 Watt\" $13.33/month.","title":"C. SAS Pricing Agreements"},{"location":"infrastructure/sas-setup/#d-sas-registration","text":"CBSDs must register their transmit capabilities with the SAS using either the \u201cone-step\u201d or \u201cmulti-step\u201d process. The one-step process requires you to input all installation parameters and sign them with the CPI certificate all on the base station itself, or via a cloud domain proxy such as used by Baicells. Not all base stations support this and the interfaces for doing so might vary widely, so \u201cmulti-step\u201d is typically recommended.","title":"D. SAS Registration"},{"location":"infrastructure/sas-setup/#ii-register-device-in-sas-portal","text":"This tutorial will be walking through steps following the specifics of the Google SAS portal interface, but the steps should be generalizable to other SAS portals.","title":"II. Register device in SAS portal"},{"location":"infrastructure/sas-setup/#a-once-you-have-an-account-on-an-sas-service-register-your-devices-on-their-portal-or-dashboard","text":"The Google SAS portal can be found at: https://wirelessconnectivity.google.com/sas/","title":"A. Once you have an account on an SAS service, register your devices on their portal or dashboard."},{"location":"infrastructure/sas-setup/#b-our-setup","text":"Our test setup in the lab includes: 1W Baicells Nova 233 base station in the CBRS band mounted on the 6th floor balcony of our UW computer science building. Alpha Wireless 18 dBi-gain panel antenna with a beamwidth of 65 degrees (model AW3014-T4), mounted straight ahead and not tilted down.","title":"B. Our Setup"},{"location":"infrastructure/sas-setup/#c-example-configuration","text":"An example configuration for this setup is shown below. The configuration screen is a right-hand sidebar next to the map view, hence the unwieldy aspect ratio. Explanation of parameters: CBSD Category (A or B): Defined by rules in Section I.C above User ID Specified by the SAS provider when you register FCC ID and Serial Number: Both the radio and antenna model must be pre-authorized for use with CBRS by the FCC. The FCC ID is used to identify this approved device type. The serial number specifies the exact device identity. Both can usually be found on the outside of the device (circled in image below). Beamforming Gain, Beamwidth Based on antenna specs in II.B EIRP Effective Isotropic Radiated Power of your system including both the base station radio and antenna. For a Cat B CBSD, this must be 46 dBm/10 MHz=36 dBm/MHz or lower. Calculate this value by adding the max transmit power (actually power density per MHz) of the base station, in our case 28 dBm, to the antenna beamforming gain, in our case 18 dBi; 28+18=36 dBm/MHz. For the units requested by the Google interface, add 10 to this value to specify power per 10 MHz instead of per MHz. Height Specified in terms of height Above Ground Level (AGL) which you can measure using a rangefinder/ measuring tape/ building plan, or in height Above Mean Sea Level (AMSL). Not in terms of HAAT as in the Cat A/B definition. Must be accurate to within 3 m. Azimuth Refers to the compass heading/ direction that the antenna is pointing (set this to 0 for an omnidirectional antenna). This FCC tool is extremely helpful for calculating the azimuth based on the antenna\u2019s gps location and that of a structure you are pointing it at. You can get these GPS coordinates via Google Maps or Google Earth. Air Interface E_UTRA is the LTE radio standard used by our Baicells box. The only \u201csupported spec\u201d currently available for Baicells is FFS (according to a forum post, linked here). Location: In the Google interface, set the site location in GPS coordinates under the tab labeled with the map pin icon. (not shown) Parameters under \"CBSD Info\" Call Sign As far as I can tell, this can be any reasonable alphanumeric string as long as it is unique and matches the value of the \u201ccall sign\u201d parameter as sent over by the eNB or domain proxy. You will set this in the SAS interface as well as either the eNB or Baicells Cloud Core (they all need to match). Others These should match the settings with the same name on the eNB\u2019s local management portal, shown on the \u201cBasic Info\u201d page in section IV.A below.","title":"C. Example Configuration"},{"location":"infrastructure/sas-setup/#d-cpi-signature","text":"When the parameters are all filled out, click the big red \u201cReady for CPI\u201d button at the bottom of the panel (not shown here). On the CPI\u2019s version of the interface, it will provide a place to \u201csign\u201d the configuration with their CPI certificate, which they will upload to the interface. This must happen before the device can get a spectrum grant.","title":"D. CPI Signature"},{"location":"infrastructure/sas-setup/#e-status-tab","text":"After the CPI signs the eNB configuration, under the \u201cStatus\u201d tab (visible in the config panel), you should see \u201cNot yet Registered\u201d (or a similar message) because the eNB has not checked in to the Google SAS yet with its matching parameters to complete the multi-step process. If something has otherwise gone wrong, you\u2019ll see an error message here.","title":"E. Status Tab"},{"location":"infrastructure/sas-setup/#f-other-helpful-links","text":"Google CBSD registration and deregistration Elevation finder tool with map","title":"F. Other helpful links"},{"location":"infrastructure/sas-setup/#iii-steps-in-baicells-cloud-interface","text":"","title":"III. Steps in Baicells Cloud interface"},{"location":"infrastructure/sas-setup/#a-make-a-baicells-omc-account","text":"Due to Baicells\u2019 use of a \u201cdomain proxy\u201d for their SAS requests, you will need to make a new user account in the Baicells Operators Management Console (OMC): https://cloudcore.baicells.com:4443/ This is distinct from their paid \u201cCloud Core\u201d service which we will not be using in this tutorial, although the management portal is the same.","title":"A. Make a Baicells OMC account."},{"location":"infrastructure/sas-setup/#b-take-note-of-the-cloudkey","text":"Once you have made an account, note the 6-letter \u201cCloudKey\u201d in the upper right corner of the screen (circled in red). This will need to be inputted into the local eNB management portal for the eNB to check into the Cloud OMC. On your version of this portal, if you\u2019re doing this for the first time, you shouldn\u2019t see any eNBs already present.","title":"B. Take note of the CloudKey"},{"location":"infrastructure/sas-setup/#c-set-your-sas-service-provider","text":"Navigate to Advance\u2192SAS in the left hand menu, and then click the gear icon on the upper right corner, which has the hover text \u201cSettings.\u201d","title":"C. Set your SAS service provider."},{"location":"infrastructure/sas-setup/#iv-steps-in-baicells-management-interface","text":"","title":"IV. Steps in Baicells management interface"},{"location":"infrastructure/sas-setup/#a-local-management-portal","text":"The Baicells eNodeB (eNB) is best managed through the browser-based management portal; the current command line interface is accessible but extremely limited. The default IP address of the management portal (and that of most Baicells equipment I\u2019ve seen) is 192.168.150.1, and the default login credentials are admin/admin. I would recommend changing the admin login credentials to be more secure. Connect your computer to the eNB via Ethernet, and navigate to this IP address in your browser (using http://192.168.150.1, not https). Baicells Initial Login Screen: BTS Info\u2192\u201cBasic Info\u201d Page visible upon login:","title":"A. Local Management Portal"},{"location":"infrastructure/sas-setup/#b-upgrade-firmware","text":"Upgrade the firmware to the latest firmware version that supports SAS functionality, or verify that it is already up to date. You can check the official firmware page under the correct eNB model. The Nova 233 CBRS small cell we\u2019re using is model mBS1105. The latest firmware version after which SAS is officially supported is BaiBS_RTS_3.6.6.IMG (as of Feb 2021), for which the direct download is available here . Do not skip this step, otherwise none of the following steps will work right.","title":"B. Upgrade firmware"},{"location":"infrastructure/sas-setup/#c-get-everything-connected","text":"Once the firmware is upgraded, you will want to get the eNB connected to your local LTE core network (EPC) as well as to the Internet so it can contact the necessary SAS infrastructure.","title":"C. Get everything connected"},{"location":"infrastructure/sas-setup/#1-configure-internet-access-wan","text":"Navigate to the Network\u2192WAN/LAN/VLAN tab on the left hand menu. We will set the WAN interface IP address to 192.168.151.1, since the Baicells console requires (for whatever reason) a different subnet for the WAN as opposed to the LAN. Then we will connect the eNB to an Ethernet port on the EPC that has the IP address 192.168.151.2 (as set up in our previous tutorial), which will act as the eNB\u2019s Internet gateway. Don\u2019t forget to hit \u201cSave\u201d after each change you make in this interface.","title":"1. Configure Internet Access (WAN)"},{"location":"infrastructure/sas-setup/#2-check-internet-access","text":"At this point, if the EPC is configured correctly to pass eNB traffic to the Internet, the eNB should be able to ping an arbitrary IP address. To test this, navigate to the Network\u2192Diagnostics tab on the left hand menu and select \u201cPing\u201d under the \u201cMethod of Diagnostics\u201d dropdown menu. Set the \u201cTarget IP Domain\u201d to be a highly reachable IP address on the Internet such as 1.1.1.1, which is the CloudFlare DNS server. Press \u201cImplement.\u201d If the result is \u201cFail!\u201d as in the screenshot, there is likely something wrong with your eNB\u2019s Internet connection through the EPC; you should fix this issue before continuing.","title":"2. Check Internet access"},{"location":"infrastructure/sas-setup/#3-reboot-as-needed","text":"If a message appears that the eNB needs a reboot after the new settings are saved, navigate to the Reboot tab in the left hand menu and perform the reboot (Warm Reset is fine).","title":"3. Reboot as needed"},{"location":"infrastructure/sas-setup/#4-attach-to-baicells-omc","text":"To configure the eNB to talk to the OMC as discussed in the prior section, navigate to the BTS Setting\u2192Management Server tab in the management console and enter the CloudKey. Within a few minutes, the eNB should appear in your Baicells Cloud OMC console, and the \u201cBasic Info\u201d page should show that the OMC is \u201cConnected.\u201d","title":"4. Attach to Baicells OMC"},{"location":"infrastructure/sas-setup/#5-disable-ipsec","text":"For our purposes we will not be using IPsec between our EPC and eNB; the default IPSec configured is used for the Baicells Cloud EPC which we are not using. Navigate to the Network\u2192\u201cMME&IPSec Binding\u201d menu tab and set \u201cIPSec Status\u201d to \u201cDisable.\u201d You may also delete the IPSec tunnels as shown below.","title":"5. Disable IPsec"},{"location":"infrastructure/sas-setup/#6-disable-gps-sync-when-testing-indoors","text":"Navigate to the \u201cBTS Setting\u201d\u2192\u201cSync Setting\u201d menu and disable both \u201cForced Sync\u201d and \u201cGPS Sync Switch,\u201d in case you need to work with the base station in a location where you don\u2019t have a strong GPS signal. Some base stations will not start up normally or attach to the EPC unless they get a GPS signal, and we should avoid this behavior.","title":"6. Disable GPS Sync when testing indoors."},{"location":"infrastructure/sas-setup/#7-change-the-mme-settings","text":"Change the MME settings. Since we are using our local EPC, we will need to change the MME settings to reflect our MME\u2019s IP address, on which it is listening for eNBs to attach, as well as other configurations. Navigate to the BTS Info\u2192Quick Setting tab on the left hand menu. Disable RF You should set the \u201cRF Status\u201d setting to \u201cDisable\u201d before you change the MME IP, because attaching to the MME will normally cause the eNB\u2019s radio to turn on. Since we have not enabled the eNB to ask for spectrum coordinated by the SAS yet, turning on the radio may cause unwanted interference on someone else\u2019s network. PLMN setting Remove the existing \u201cPLMN ID\u201d (by clicking the trash can symbol) and set it to the value that you have configured in your EPC. In our networks, we use \u201c91054\u201d as our PLMN, so add this as a \u201cPrimary\u201d and \u201cNotReserved\u201d PLMN by entering the number in the text box and clicking the \u201c+\u201d button. MME IP address Remove the existing MME IP associated with the old PLMN. Add the new MME IP address, in our case 192.168.150.2, by entering it in the text box and clicking \u201c+\u201d. This MME IP should be associated with the newly added PLMN by default. Save the changes and reboot the eNB (Warm Reset); after the reboot has finished (within a few minutes), the eNB should attach to the MME. If you navigate to BTS Info\u2192Basic Info, you should see the MME Status change from \u201cNot Connected\u201d to \u201cConnected.\u201d If you are looking at the MME logs on the EPC, you will also see the record that an eNB has attached.","title":"7. Change the MME settings"},{"location":"infrastructure/sas-setup/#8-enable-sas","text":"SAS should only be enabled after successfully attaching the eNB to the MME. Unfortunately, when SAS is enabled, the eNB will not attach to the MME unless it has a currently valid authorization to transmit on a certain frequency. However, until it is attached to an MME, the Baicells Cloud OMC will not provide it this authorization. So we need to have SAS disabled first with the RF also disabled, attach the eNB to the MME, and then enable SAS. Choose \u201cMulti-step\u201d under \u201cSAS Registration Type,\u201d as specified in Section I.E. Also choose \u201cB\u201d under \u201ccategory,\u201d and write in the other parameters to match the ones with the same name in the Google SAS configuration. After you click \u201cSave,\u201d SAS should be enabled immediately. You should see the SAS enabled status change in the Baicells Cloud OMC. If all goes smoothly, your device should get an authorization to transmit within a few minutes and the radio should turn on!","title":"8. Enable SAS"},{"location":"infrastructure/sas-setup/#9-check-baicells-cloud-omc-to-debug-issues","text":"You can check the status of the SAS authorization process in the Cloud OMC. Here you can find logs (upper right corner of SAS screen, shown in the screenshot below) with any error messages that may have occurred in the process. Errors can be caused by invalid or non-matching parameter values, lack of CPI signature, lack of spectrum availability, etc. In more difficult cases, after device registration the SAS may not respond to spectrum inquiries without sending any clear error messages. I have encountered this scenario when requesting spectrum around midnight, which may have been caused by brief database unavailability during the daily \u201cSAS Sync\u201d or IAP. My recommendation is to avoid requesting a new spectrum grant after 11 pm PST. If you change anything about the equipment used on site or the location/orientation of the equipment, you need to change the SAS registration, have it re-signed by the CPI, and use the Baicells OMC to re-request a new spectrum authorization- this process is described in the following section.","title":"9. Check Baicells CLOUD OMC to debug issues"},{"location":"infrastructure/sas-setup/#v-how-to-change-location-antenna-properties-etc-after-deployment","text":"As an example, this section will show how you would change the equipment\u2019s location upon moving from test site to deployment site. Get the new GPS location either manually using Google Maps/Earth, or automatically using Baicells OMC\u2019s GPS reading for the eNB if available. Google SAS steps In the upper right hand corner of the Google SAS configuration for the deployed equipment (long narrow right side panel for a particular site), press the unlock button (shaped like a padlock) to make the configuration editable. To edit the site location, click on the map pin icon in the upper left corner of this same right hand configuration panel to enter the location panel. Enter the new GPS coordinates in the box. After your changes, lock the site configuration again. (If the red \u201cReady for CPI\u201d button appears again at the bottom of the main configuration panel, go ahead and click it to prompt the CPI to sign.) You may have to wait a few minutes or hours for the changes to sync to the CPI\u2019s SAS database view. If after a while the CPI still cannot see the location change, ask them to enter the new GPS coordinates in their own interface and re-sign the configuration. Baicells Cloud OMC steps On the Baicells OMC, navigate to the Advance\u2192SAS screen where you can see the list of CBRS devices and their SAS status. Click on the 3 dots ( \u2807) symbol before the serial number for a particular device and click on \u201cProcedure\u201d to enter the SAS procedure screen. On the Procedure screen, you can see the most recent SAS logs, relinquish and re-request active spectrum authorizations, or de-register and re-register devices. First click on the \u201cAuthorized\u201d icon and click on the \u201cRelinquishment req\u201d button to relinquish the current spectrum authorization. Then the latter two icons will become greyed out, but the device will remain registered. We will need to fully de-register and re-register the device with the new parameters. Click the \u201cRegistered\u201d icon and then the \u201cDe-register\u201d button when it appears to de-register the device. Once the device is in the \u201cUnregistered\u201d state, click the \u201cUnregistered\u201d icon and then click the \u201cRegister req\u201d button when it appears. If all goes well, the device should re-register, and also request and receive a new grant (completing the full procedure) within a few moments.","title":"V. How to change location, antenna properties, etc. after deployment"},{"location":"infrastructure/software/","text":"Our Software Here is a list of the software that we use to deploy, maintain, and plan our network sites. Networking Local Services We use the CoLTE project maintained by the University of Washington ICTD Lab to provide services such as network monitoring, web-based administration, and local web and DNS serving/caching. Evolved Packet Core (EPC) Our EPC is powered by Open5GS , an open-source project for 4G and 5G core networks. Currently all of our networks are 4G networks. Spectrum Access System (SAS) We have a partnership with Google SAS to gain access to CBRS spectrum. Learn more about our SAS setup here . Network Monitoring and Alerting We use LibreNMS and SNMPd to monitor our nodes and provide alerting. Our Baicells-specific Network Manager setup is documented here , and our instructions for configuring a new node can be found here . Field Measurement Network Performance Measurement Tool The LCL Network Performance Measurement Tool is an Android App in development that will measure a variety of network metrics, including but not limited to ping, upload/download speed, signal strength. We will use this tool to easily capture and upload network metrics in the field so that we can provide better estimates of what kind of Internet access that our users can expect to receive. Network Cell Info Lite Network Cell Info Lite is an Android App on the Google Playstore that is free to use (with advertisements) and is capable of taking network metric measurements and recording them to upload. This is an option that we use but are not satisfied with for many reasons, which is why we are developing our own app. Site Planning Google Earth We primarily use the Google Earth Pro desktop application to do a rough line-of-sight evaluation. We perform what is called a \"viewshed analysis\" that allows us to determine what is visible from a specific point on Earth (e.g. a rooftop). Ubiquiti Line of Sight A web-based line of sight tool provided by Ubiquiti that contains helpful altitude data and diagrams. A drawback is that it is specialized to provide data for Ubiquiti devices only. Other resources Facebook ISP Toolbox Line of Sight A web-based line of sight tool provided by Facebook Connectivity that utilizes public LiDAR data. Unfortunately LiDAR data for the Seattle area is not present yet, although there is data for some areas in Tacoma. Facebook ISP Toolbox Market Evaluator A web-based market evaluator provided by Facebook Connectivity that can be used to provide more context about the areas around potential network sites. It offers information about other service providers in the area, average household income, median speeds, and current lowest broadband price available.","title":"Software Overview"},{"location":"infrastructure/software/#our-software","text":"Here is a list of the software that we use to deploy, maintain, and plan our network sites.","title":"Our Software"},{"location":"infrastructure/software/#networking","text":"","title":"Networking"},{"location":"infrastructure/software/#local-services","text":"We use the CoLTE project maintained by the University of Washington ICTD Lab to provide services such as network monitoring, web-based administration, and local web and DNS serving/caching.","title":"Local Services"},{"location":"infrastructure/software/#evolved-packet-core-epc","text":"Our EPC is powered by Open5GS , an open-source project for 4G and 5G core networks. Currently all of our networks are 4G networks.","title":"Evolved Packet Core (EPC)"},{"location":"infrastructure/software/#spectrum-access-system-sas","text":"We have a partnership with Google SAS to gain access to CBRS spectrum. Learn more about our SAS setup here .","title":"Spectrum Access System (SAS)"},{"location":"infrastructure/software/#network-monitoring-and-alerting","text":"We use LibreNMS and SNMPd to monitor our nodes and provide alerting. Our Baicells-specific Network Manager setup is documented here , and our instructions for configuring a new node can be found here .","title":"Network Monitoring and Alerting"},{"location":"infrastructure/software/#field-measurement","text":"","title":"Field Measurement"},{"location":"infrastructure/software/#network-performance-measurement-tool","text":"The LCL Network Performance Measurement Tool is an Android App in development that will measure a variety of network metrics, including but not limited to ping, upload/download speed, signal strength. We will use this tool to easily capture and upload network metrics in the field so that we can provide better estimates of what kind of Internet access that our users can expect to receive.","title":"Network Performance Measurement Tool"},{"location":"infrastructure/software/#network-cell-info-lite","text":"Network Cell Info Lite is an Android App on the Google Playstore that is free to use (with advertisements) and is capable of taking network metric measurements and recording them to upload. This is an option that we use but are not satisfied with for many reasons, which is why we are developing our own app.","title":"Network Cell Info Lite"},{"location":"infrastructure/software/#site-planning","text":"","title":"Site Planning"},{"location":"infrastructure/software/#google-earth","text":"We primarily use the Google Earth Pro desktop application to do a rough line-of-sight evaluation. We perform what is called a \"viewshed analysis\" that allows us to determine what is visible from a specific point on Earth (e.g. a rooftop).","title":"Google Earth"},{"location":"infrastructure/software/#ubiquiti-line-of-sight","text":"A web-based line of sight tool provided by Ubiquiti that contains helpful altitude data and diagrams. A drawback is that it is specialized to provide data for Ubiquiti devices only.","title":"Ubiquiti Line of Sight"},{"location":"infrastructure/software/#other-resources","text":"","title":"Other resources"},{"location":"infrastructure/software/#facebook-isp-toolbox-line-of-sight","text":"A web-based line of sight tool provided by Facebook Connectivity that utilizes public LiDAR data. Unfortunately LiDAR data for the Seattle area is not present yet, although there is data for some areas in Tacoma.","title":"Facebook ISP Toolbox Line of Sight"},{"location":"infrastructure/software/#facebook-isp-toolbox-market-evaluator","text":"A web-based market evaluator provided by Facebook Connectivity that can be used to provide more context about the areas around potential network sites. It offers information about other service providers in the area, average household income, median speeds, and current lowest broadband price available.","title":"Facebook ISP Toolbox Market Evaluator"},{"location":"learn/cable-crimping/","text":"Crimping Ethernet Cables In this article, you'll all about crimping ethernet cables! What is crimping an ethernet cable? Crimping an ethernet cable is the process of attaching connectors onto the ends of ethernet cables. This process is also called 'RJ45 crimping' because RJ45 is the name of the connectors that are used for ethernet cables, and they are what is being crimped. Why? Setting up networks involves setting up long ethernet cable connections between different devices. Instead of buying premade ethernet cables of varying lengths (e.g. 5ft, 10ft, 50ft, etc.), it's more practical to just have a big spool of cabling that we can roll out and cut to the exact length we need. Therefore we need to be able to attach RJ45 connectors to the ends of these cut cables so that we can actually plug them in! Crimping Kit Here are some tools you should have in your crimping kit! RJ45 Crimping Tool An RJ45 crimping tool is the most essential tool. Although it's technically possible to crimp ethernet cables without this specialized tool, it's not very practical for crimping lots of cables. Its primary utility is to do the actual 'crimping' part of compressing/crimping the tiny gold pins in the RJ45 connector onto the ethernet cables. It also has blades that can be used to cut or strip wires. Cable Stripper Cable strippers are used to take off the protecting shielding around cables and expose the inner wires. You can also do the same thing with a simple blade or pair of scissors. The trickiest part about stripping cables is trying to avoid cutting the inner wires! RJ45 Connectors RJ45 connectors are required for crimping because they feature the 8 golden pins that get crimped onto the 8 wires of the ethernet cable. They are what get plugged into ethernet ports! They also feature a latch/clip that locks the ethernet cable into the port once it is plugged in. RJ45 Boots RJ45 boots can be optionally used to protect the RJ45 connector. It provides insulation and prevents the cable from being breaking easily. They have to put slipped onto the cable before you put on the RJ45 connectors though! RJ45 Cable Tester RJ45 cable testers allow you to guarantee that you did the job correctly! They have two pieces that separate from each other, and you plug each end of your crimped ethernet cable into the port on each piece. Then you turn it on and the cable tester will test the connection for all 8 pins. If there are any missing lights on any of the pins, it means that you messed up somewhere and have to restart! How to Crimp an Ethernet Cable Assuming you have a crimping kit and an ethernet cable that needs to be crimped, here are all the steps! Step 0) Slip on the RJ45 boot (optional) Step 1) Strip the cable Push the cable into the razor slot of the strip tool and turn it around the cable to make an even cut around the sheath. Careful not to nick the wires inside! Unwrap the blue foil shielding and plastic to uncover the twisted wire pairs. Push the copper grounding wire to the side. (Ignore the white string.) Step 2) Organize the wires In this step, you'll be taking the 8 colored wires inside the ethernet cable and putting them into the correct ordering of colors. NOTE This is the hardest part of crimping! The wires are small and are hard to control. Take your time and make sure you do this step correctly! Otherwise you might have to go back and restart. Step 2.1) Untwist the wires There should be 4 pairs of wires: green, brown, orange, and blue. Each pair has a solid-colored wire and a striped-colored wire. Untwist these pairs and separate them into the 8 wires. Step 2.2) Straighten out wires After untwisting the wires, they are probably still kinked and look like they want to be twisted. In this step, you should carefully grab all the wires and try to straighten them out by pulling on them. This will prevent the wires from moving around later on. WARNING Don't break off the wires! Step 2.3) Lay out wires in order With your straightened out wires, put them into the correct order! Make sure that the wires are all flat and in line with each other. The ordering for these wires is: 1. Striped orange 2. Solid orange 3. Striped green 4. Solid blue 5. Striped blue 6. Solid green 7. Striped brown 8. Solid brown TIP After laying them out in order, straighten them out again as a group! This will help keep the wires together. Step 2.4) Trim the wires Trim the wires evenly to about 1/2 inch in length using scissors or the blade of your crimping tool. You want to make sure you have enough room for the wires to reach the end of the RJ45 connector. But also try to have room for the shielding of the cable to be inserted into the connector too. TIP You can put the wires side-by-side to the RJ45 connector to see how long you should cut it. Look at the next step to see what the final product looks like. TIP If you don't have the shielding inside of the connector, it makes it easier for the wires to snap off later, which is bad. TIP Make sure that you cut the wires evenly! Step 3) Slide wires into RJ45 connector Carefully slide your 8 wires into the connector. Make sure that the clip is facing away from you! If it is really hard to slide it into the connector, you probably didn't straighten out the wires enough in step 2.2 or 2.3. MORE INFO Inserting the wires with the clip facing away from you is the standard. However, you could technically do it in 'reverse' and insert the wires with the clip facing you, as long as you do it on both ends of the cable. You shouldn't do this in practice though because others would get confused when looking at your cable. Step 4) Crimp it Push the RJ45 connector into the slot of your crimping tool for RJ45 connectors. The slot should be labeled something like \"8P\" for the 8-pin RJ45 connector that you're using. In this step, you're doing the actual 'crimping' part and crimping/compressing/stabbing the 8 golden pins on the RJ45 connector into the 8 colored wires. TIP Squeeze as hard as you can! You need to make sure that all 8 pins are crimped. Step 5) Test it Slide the two pieces of the tester apart and plug each of the cable ends into either piece. Turn the switch to \u201cOn\u201d or \u201cSlow.\u201d If it's working, all 8 numbers should be flashing green. If any of them are not showing green, it means something is wrong and you have to redo it! The RJ45 connector can't be reused once it's crimped, so you should just cut the end off and start back at step 1. If everything is green, then you're done! If you had a cable boot, you can push the boots onto the RJ45 connector now. Resources Workshop Slides ISOC ICS Training Workshop Videos Crimping Tutorial (2 mins) Cable Testing Only need first 7 minutes for the basics Websites Color Coding Diagrams Crimping Comic From People's Open Network + sudomesh Shopping Crimping Kit ($23) Comes with a nice case Might need to buy your own batteries for cable tester Crimping Kit ($17) Might need to buy your own batteries for cable tester","title":"Crimping Ethernet Cables"},{"location":"learn/cable-crimping/#crimping-ethernet-cables","text":"In this article, you'll all about crimping ethernet cables!","title":"Crimping Ethernet Cables"},{"location":"learn/cable-crimping/#what-is-crimping-an-ethernet-cable","text":"Crimping an ethernet cable is the process of attaching connectors onto the ends of ethernet cables. This process is also called 'RJ45 crimping' because RJ45 is the name of the connectors that are used for ethernet cables, and they are what is being crimped.","title":"What is crimping an ethernet cable?"},{"location":"learn/cable-crimping/#why","text":"Setting up networks involves setting up long ethernet cable connections between different devices. Instead of buying premade ethernet cables of varying lengths (e.g. 5ft, 10ft, 50ft, etc.), it's more practical to just have a big spool of cabling that we can roll out and cut to the exact length we need. Therefore we need to be able to attach RJ45 connectors to the ends of these cut cables so that we can actually plug them in!","title":"Why?"},{"location":"learn/cable-crimping/#crimping-kit","text":"Here are some tools you should have in your crimping kit!","title":"Crimping Kit"},{"location":"learn/cable-crimping/#rj45-crimping-tool","text":"An RJ45 crimping tool is the most essential tool. Although it's technically possible to crimp ethernet cables without this specialized tool, it's not very practical for crimping lots of cables. Its primary utility is to do the actual 'crimping' part of compressing/crimping the tiny gold pins in the RJ45 connector onto the ethernet cables. It also has blades that can be used to cut or strip wires.","title":"RJ45 Crimping Tool"},{"location":"learn/cable-crimping/#cable-stripper","text":"Cable strippers are used to take off the protecting shielding around cables and expose the inner wires. You can also do the same thing with a simple blade or pair of scissors. The trickiest part about stripping cables is trying to avoid cutting the inner wires!","title":"Cable Stripper"},{"location":"learn/cable-crimping/#rj45-connectors","text":"RJ45 connectors are required for crimping because they feature the 8 golden pins that get crimped onto the 8 wires of the ethernet cable. They are what get plugged into ethernet ports! They also feature a latch/clip that locks the ethernet cable into the port once it is plugged in.","title":"RJ45 Connectors"},{"location":"learn/cable-crimping/#rj45-boots","text":"RJ45 boots can be optionally used to protect the RJ45 connector. It provides insulation and prevents the cable from being breaking easily. They have to put slipped onto the cable before you put on the RJ45 connectors though!","title":"RJ45 Boots"},{"location":"learn/cable-crimping/#rj45-cable-tester","text":"RJ45 cable testers allow you to guarantee that you did the job correctly! They have two pieces that separate from each other, and you plug each end of your crimped ethernet cable into the port on each piece. Then you turn it on and the cable tester will test the connection for all 8 pins. If there are any missing lights on any of the pins, it means that you messed up somewhere and have to restart!","title":"RJ45 Cable Tester"},{"location":"learn/cable-crimping/#how-to-crimp-an-ethernet-cable","text":"Assuming you have a crimping kit and an ethernet cable that needs to be crimped, here are all the steps!","title":"How to Crimp an Ethernet Cable"},{"location":"learn/cable-crimping/#step-0-slip-on-the-rj45-boot-optional","text":"","title":"Step 0) Slip on the RJ45 boot (optional)"},{"location":"learn/cable-crimping/#step-1-strip-the-cable","text":"Push the cable into the razor slot of the strip tool and turn it around the cable to make an even cut around the sheath. Careful not to nick the wires inside! Unwrap the blue foil shielding and plastic to uncover the twisted wire pairs. Push the copper grounding wire to the side. (Ignore the white string.)","title":"Step 1) Strip the cable"},{"location":"learn/cable-crimping/#step-2-organize-the-wires","text":"In this step, you'll be taking the 8 colored wires inside the ethernet cable and putting them into the correct ordering of colors. NOTE This is the hardest part of crimping! The wires are small and are hard to control. Take your time and make sure you do this step correctly! Otherwise you might have to go back and restart.","title":"Step 2) Organize the wires"},{"location":"learn/cable-crimping/#step-21-untwist-the-wires","text":"There should be 4 pairs of wires: green, brown, orange, and blue. Each pair has a solid-colored wire and a striped-colored wire. Untwist these pairs and separate them into the 8 wires.","title":"Step 2.1) Untwist the wires"},{"location":"learn/cable-crimping/#step-22-straighten-out-wires","text":"After untwisting the wires, they are probably still kinked and look like they want to be twisted. In this step, you should carefully grab all the wires and try to straighten them out by pulling on them. This will prevent the wires from moving around later on. WARNING Don't break off the wires!","title":"Step 2.2) Straighten out wires"},{"location":"learn/cable-crimping/#step-23-lay-out-wires-in-order","text":"With your straightened out wires, put them into the correct order! Make sure that the wires are all flat and in line with each other. The ordering for these wires is: 1. Striped orange 2. Solid orange 3. Striped green 4. Solid blue 5. Striped blue 6. Solid green 7. Striped brown 8. Solid brown TIP After laying them out in order, straighten them out again as a group! This will help keep the wires together.","title":"Step 2.3) Lay out wires in order"},{"location":"learn/cable-crimping/#step-24-trim-the-wires","text":"Trim the wires evenly to about 1/2 inch in length using scissors or the blade of your crimping tool. You want to make sure you have enough room for the wires to reach the end of the RJ45 connector. But also try to have room for the shielding of the cable to be inserted into the connector too. TIP You can put the wires side-by-side to the RJ45 connector to see how long you should cut it. Look at the next step to see what the final product looks like. TIP If you don't have the shielding inside of the connector, it makes it easier for the wires to snap off later, which is bad. TIP Make sure that you cut the wires evenly!","title":"Step 2.4) Trim the wires"},{"location":"learn/cable-crimping/#step-3-slide-wires-into-rj45-connector","text":"Carefully slide your 8 wires into the connector. Make sure that the clip is facing away from you! If it is really hard to slide it into the connector, you probably didn't straighten out the wires enough in step 2.2 or 2.3. MORE INFO Inserting the wires with the clip facing away from you is the standard. However, you could technically do it in 'reverse' and insert the wires with the clip facing you, as long as you do it on both ends of the cable. You shouldn't do this in practice though because others would get confused when looking at your cable.","title":"Step 3) Slide wires into RJ45 connector"},{"location":"learn/cable-crimping/#step-4-crimp-it","text":"Push the RJ45 connector into the slot of your crimping tool for RJ45 connectors. The slot should be labeled something like \"8P\" for the 8-pin RJ45 connector that you're using. In this step, you're doing the actual 'crimping' part and crimping/compressing/stabbing the 8 golden pins on the RJ45 connector into the 8 colored wires. TIP Squeeze as hard as you can! You need to make sure that all 8 pins are crimped.","title":"Step 4) Crimp it"},{"location":"learn/cable-crimping/#step-5-test-it","text":"Slide the two pieces of the tester apart and plug each of the cable ends into either piece. Turn the switch to \u201cOn\u201d or \u201cSlow.\u201d If it's working, all 8 numbers should be flashing green. If any of them are not showing green, it means something is wrong and you have to redo it! The RJ45 connector can't be reused once it's crimped, so you should just cut the end off and start back at step 1. If everything is green, then you're done! If you had a cable boot, you can push the boots onto the RJ45 connector now.","title":"Step 5) Test it"},{"location":"learn/cable-crimping/#resources","text":"","title":"Resources"},{"location":"learn/cable-crimping/#workshop-slides","text":"ISOC ICS Training Workshop","title":"Workshop Slides"},{"location":"learn/cable-crimping/#videos","text":"Crimping Tutorial (2 mins) Cable Testing Only need first 7 minutes for the basics","title":"Videos"},{"location":"learn/cable-crimping/#websites","text":"Color Coding Diagrams Crimping Comic From People's Open Network + sudomesh","title":"Websites"},{"location":"learn/cable-crimping/#shopping","text":"Crimping Kit ($23) Comes with a nice case Might need to buy your own batteries for cable tester Crimping Kit ($17) Might need to buy your own batteries for cable tester","title":"Shopping"},{"location":"learn/lte-networks/","text":"LTE Networks Our network uses a 4G LTE network architecture. Understanding everything is a huge challenge, but understanding it at a high-level is very achievable. Consider exploring all of these links as they all complement each other well! Helpful videos How Cell Service Actually Works Broad overview of cellular technologies, from the very basics up to advanced topics, in only 20 minutes AT&T Archives Video: AMPS Old video from 1978 about an older version of cell networks (AMPS) Very very high quality and gives good background on cellular networks Learn 4G LTE Network Architecture Quick high-level overview of 4G LTE architecture Only shows diagrams How does your mobile phone work? Very good visual for the entire system of how cell phones work today Has 3d animation so it's easier to understand conceptually Doesn't go over LTE architecture specifically Driving Factors of LTE Architecture Gain more understanding of the context around LTE architecture Helpful articles YaleBTS LTE Concepts Explains basically ALL the parts of the LTE architecture TutorialsPoint LTE Network Architecture Gives overview of LTE architecture Not very detailed, but it's a good introduction to the individual components of LTE Open5GS Introduction Documentation for Open5GS, the repo that our networks rely on This is the most applicable to our specific network because it's what we actually use.","title":"LTE Networks"},{"location":"learn/lte-networks/#lte-networks","text":"Our network uses a 4G LTE network architecture. Understanding everything is a huge challenge, but understanding it at a high-level is very achievable. Consider exploring all of these links as they all complement each other well!","title":"LTE Networks"},{"location":"learn/lte-networks/#helpful-videos","text":"How Cell Service Actually Works Broad overview of cellular technologies, from the very basics up to advanced topics, in only 20 minutes AT&T Archives Video: AMPS Old video from 1978 about an older version of cell networks (AMPS) Very very high quality and gives good background on cellular networks Learn 4G LTE Network Architecture Quick high-level overview of 4G LTE architecture Only shows diagrams How does your mobile phone work? Very good visual for the entire system of how cell phones work today Has 3d animation so it's easier to understand conceptually Doesn't go over LTE architecture specifically Driving Factors of LTE Architecture Gain more understanding of the context around LTE architecture","title":"Helpful videos"},{"location":"learn/lte-networks/#helpful-articles","text":"YaleBTS LTE Concepts Explains basically ALL the parts of the LTE architecture TutorialsPoint LTE Network Architecture Gives overview of LTE architecture Not very detailed, but it's a good introduction to the individual components of LTE Open5GS Introduction Documentation for Open5GS, the repo that our networks rely on This is the most applicable to our specific network because it's what we actually use.","title":"Helpful articles"},{"location":"learn/networking/","text":"Learn about Computer Networks This page is currently in development. For now, please view our lesson on computer networks from our Digital Stewards curriculum here . TODO","title":"Networking"},{"location":"learn/networking/#learn-about-computer-networks","text":"This page is currently in development. For now, please view our lesson on computer networks from our Digital Stewards curriculum here . TODO","title":"Learn about Computer Networks"},{"location":"learn/wireless-communication/","text":"Crash Course in Wireless Communication Authored by: Dominick Ta Last updated: June 18th, 2021 TODO: [ ] Expand on transmit/receiving in antennas section [ ] Finish communication section [ ] Finish protocols section This is a crash course in wireless communication: the magical way that we humans send information (e.g. music, messages, text, videos) to each other over long distances, without a wire. Wireless communication is primarily powered by radio waves, a physical thing that we as humans cannot see or touch. In this article you will gain a layman's understanding of how wireless communication works. Specifically, this article will cover the following broad topics: Radio waves and the physics behind it Antennas How data is communicated via radio waves Examples of wireless communication technologies This is not meant to be a comprehensive article, so there will be a lot of simplifications, analogies, and informal explanations. Please let me know at domta@cs.uw.edu if you see any inaccuracies, misconceptions, or misnomers. Radio waves Radio waves are just oscillations of energy that exist throughout our environment. They can be generated naturally by lightning, or artifically by equipment made by humans such as cell phones. The technical definition of radio waves are that they are a form of 'electromagnetic radiation'. Other types of electromagnetic radiation include visible light (what we get from the sun), infrared, and X-rays. How radio waves are created To understand why radio waves are considered a type of electromagnetic radiation, it is helpful to know how we generate radio waves. This section is not important to fully understand, but it is good to skim to have a basic idea of how this stuff works. We create radio waves by moving electrons back and forth within an electrically conductive object (an object made of material that allows electrons to move freely, such as metals). This works because electrons have special properties: All electrons have ' electric fields ' surrounding them that attracts and repels other charged particles. All moving electrons produce ' magnetic fields ' that are the basis for how magnets work. Therefore, when electrons move there are two fields (electric & magnetic) present that combine to create creates an ' electromagnetic field '. By moving an electron back and forth in an oscillating (repetitive) motion, these electromagnetic fields are constantly being disturbed/moved in a way that creates electromagnetic waves or equivalently, electromagnetic radiation . In this GIF below, we see the charge of an antenna changing, representing electrons moving back and forth within the antenna. This creates pulsating electromagnetic waves. Note: in this particular GIF, it is actually only showing the pulsating electric fields. In this GIF below, we are able to fully see an electromagnetic wave with a 3D representation. The red component of the wave represents the electric field, while the blue component represents the magnetic field. Notice how they are perpendicular to each other! This is also why the GIF above didn't show both fields: it was a 2D representation! In this section, we learned about radio waves. In essence, you can just think of radio waves as physical phenomenon that look like these sine waves: With the proper hardware and knowledge, we can create any type of wave we want! We can vary frequencies (how fast the waves go by), amplitudes (how tall/powerful the waves are), and phases (what position within the loop the wave is in). Frequency & Wavelength It turns out that a fundamental characteristic of any given radio wave is its frequency. Therefore, it's important to know what 'frequency' means, and how it relates to the concept of 'wavelength'. Frequency is a measurement of how often something happens. In the case of radio waves, it measures how many cycles of a radio wave occurs in a certain amonut of time. Frequency is measured in the units of hertz (Hz) , which represents cycles per second. If we had a radio wave that passed through 10 complete cycles in a minute, it would have a frequency of 0.16Hz (10 cycles per 60 seconds). Wavelength measures the physical length of a single cycle in a radio wave. If we could see radio waves and measure it, and we saw that there was a distance of 10-feet between two of the peaks in a radio wave, then that radio wave would have a wavelength of 10 feet. In the image above, we can see a natural relationship between frequency and wavelength: a faster frequency means that you will have shorter wavelengths! Or conversely, longer wavelengths means that there is a slower frequency! When one value goes up, the other value has to go down; this is called an inverse relationship . So if I told you that I had a radio wave with a very high frequency, you could figure out that my radio wave has very small wavelengths. And actually, if I told you exactly what frequency my radio waves travelled at, you'd be able to figure out the exact size of the wavelength! For example, if I told you I had a radio wave with a frequency of 10Hz, you would be able to figure out that my radio wave has a wavelength of approximately 30,000,000 meters. This is because radio waves are a physical thing, so they always travel through air at the same speed: the speed of light. This means we can consistently convert back and forth between frequency and wavelength with some basic algebra. The basic equation, where c is the speed of light (3.0 x 10^8 m/s), is: frequency (Hz) * wavelength (m) = c So given a radio wave with a frequency of 10Hz, to solve for wavelength, I just need to take the speed of light and divide by 10! 30,000,000 divided by 10 gives a value of a wavelength of 30,000,000 meters. To summarize this section, frequency and wavelength are important properties of radio waves. Although they describe different aspects of a radio wave, they are essentially synonymous because we can easily convert between the two. When people are talking about radio waves, you may hear them talk in terms of frequencies (e.g. megahertz, gigahertz) or you may hear them talk in terms of wavelengths (e.g. meters). In the next section, we'll see why exactly frequency is such an important characteristic of radio waves. How we distinguish between radio waves An important thing to remember about radio waves is that nowadays they surround us everywhere we go! Radio waves are powerful because they can go through obstacles like walls, and they can potentially propagate over huge distances at a relatively cheap cost. Radio waves are used to communicate information in technologies such as GPS, WiFi, Bluetooth, cell phones, music radio stations, and more. The problem with this is that these radio waves interfere with each other and combine together to become a jumbled mess! They are all co-existing within the same space, and they can't avoid each other. In real life we don't get to have nice, simple, isolated radio wave like in the previous sections, we get a mix of radio waves coming all at once! And somehow, we have to find and narrow down the signal we care about. Imagine you are at an airport and you're trying to talk to your friend, but it is super crowded and theres people talking and shouting all around you. It would be super hard to hear your friend and have a conversation! (In this situation the people represent devices that use radio waves, the sound waves represent radio waves, and the voices & words represent the data we want to transmit) But if your friend talks loud enough, even though your ear is full of noise from everyone else in the airport, you can still figure out what your friend is trying to tell you. This is because you're smart enough to recognize what your friend's voice sounds like and you can focus on that voice. We can do the same thing with radio waves of different frequencies! (Being able to focus on your friend's specific voice is analogous to being able to focus on only radio waves of a specific frequency) In the image below, we can see a red radio wave. This radio wave is actually the combination of 5 radio waves of different frequencies! In the blue, we see this same signal analyzed and split into the individual components, located at its respective frequencies. (Analogy: 5 people talking at the same time, what your ears hear is the red. Your brain recognizing that these are 5 different voices is the blue) The mathematical process of going from the red representation (the signal in the time domain) to the blue representation (the signal in the frequency domain) is called the \"Discrete Fourier Transform\". You may also hear about something called the \"Fast Fourier Transform\" which is the discrete fourier transform, but a very clever and fast way to calculate it. (Intuitively, the DFT/FFT is essentially comparing a bunch of sine waves of varying frequencies to the signal detected, and calculating how similar they are. This would be like your brain iterating through all possible human voices and checking to see how strongly your ears hear that particular voice) This means that even though there may be a jumbled mess of radio waves surrounding us at all times, if they are radio waves of different frequencies, we are able to distinguish between all these different frequencies using some old fashioned engineering. This non-trivial fact is what allows our world to have so many different types of devices communicating wirelessly all at the same time! They are all using radio waves, all in the same space, but at different frequencies! This is why radio waves are identified by their frequency (or wavelength). Summary In this section on radio waves, we learned about what they are, the basics of how they're produced, frequency & wavelength, and how we distinguish between different radio waves co-existing in the same space. These are the fundamental concepts behind the physics of radio waves that engineers take advantage of. In the next section on antennas, we will learn what they are and how they are used to efficiently propagate/send radio waves. In another section, we will learn more about how exactly we manipulate radio waves to convey the information we want to send. Antennas We use antennas in our everyday lives, but most people don't know how they work. We use antennas on cars, on buildings, and even within our computers and phones! How they work Material properties Antennas are all made up of electrically conductive material. This usually means antennas are made out of metals like copper. Materials that are electrically conductive allow electrons to freely move throughout it. The opposite type of material would be electrically insulating material. As a real-life analogy, imagine a typical swimming pool filled with water. A normal pool like this allows people to freely swim through it! In this analogy the water represents electrically conductive material and people represent electrons. Now imagine a piece of copper metal as being that pool of water. Because copper is electrically conductive, electrons can freely move through it! An analogy for an electrically insulating material would be a swimming pool filled with jello/pudding/gelatin. If someone tried diving into that pool, they wouldn't get very far and it'd be super hard or impossible to swim through it. In this analogy the jello/pudding/gelatin represents electrically insulating material and people represent electrons. Now imagine a piece of plastic being that pool of water. Because plastic is electrically insulating, eletrons are mostly stuck where they are inside the plastic! Taking advantage of moving electrons Antennas need to be electrically conductive because they transmit and receive radio waves by taking advantage of the movement of electrons. In the above section on \"How radio waves are created\" we learned that radio waves are generated by moving an electron back and forth in an oscillating (repetitive) motion. This oscillation of electrons occurs in the antennas. If antennas weren't electrically conductive, these electrons wouldn't be able to move and create these radio waves! How transmitting with an antenna works In order to transmit with an antenna, the antenna needs to be connected to an electrical component that can control the movement of these electrons. TODO: expand/clarify? How receiving with an antenna works Antennas receive radio signals passively. As the electromagnetic fields are manipulated in the environment around an antenna, the electrons in the antenna move accordingly (because of how the physics of it work). By monitoring the movement of these electrons, the respective radio wave can be captured. TODO: expand/clarify? Communicating with radio waves How do we as humans harness this power of manipulating radio waves as communication? We agree on a bunch of different rules and conventions on how we will manipulating these radio waves to convey information efficiently and responsibly. In the United States, most of these rules are established and enforced by the Federal Communications Commission (FCC). An analogy To lay a conceptual foundation for this relatively abstract section, here is an analogy. Suppose we have two friends with the simple names of \"A\" and \"B\" that want to talk to each other over a distance, but they cant see, hear, or touch each other over that distance. The only way method of communication they have is a really long piece of rope between them. So once they travel far away from each other, they will each be holding one end of the rope and will be trying to communicate. But before they travel far away from each other, they need to talk to each other to figure out a set of rules of communication so that they can understand each other when they feel the rope moving. When coming up with these rules for communication, one of the first things that A & B need to do is come up with a language. Because A & B really like computers, they chose the language of computers: binary. They chose this language because it is super simple and effective; it only has two letters (1 and 0) and you can send tons of information by being clever with 1s and 0s (thats what computers do). Now the next thing that A & B needs to do is figure out how to use the rope to send these 1s and 0s. Here are some ideas they brainstormed together: * If the rope is moving up and down (oscillating), then that is considered a 1. If the rope is not moving, then that is considered a 0. * If the rope is oscillating super fast then that's a 1, but if the rope is oscillating slowly then that's a 0. * If the rope is oscillating super fast then that's a 0, but if the rope is oscillating slowly then that's a 1. * If the rope is oscillating with a big height then that's a 1, but if the rope is oscillating with small height then that's a 0. A & B realized two properties of the movement of the rope that they could capture: (1) frequency, how fast the rope is oscillating, and (2) amplitude, how tall the rope is when its oscillating. The term for manipulating these properties is \"modulation\". This makes sense because a dictionary definition of modulation is \"to adjust\"; modulation is just a fancy word for changing. In this analogy, the material/medium of communication was the rope. But in our context, the material/medium of communication is radio waves. Both of these materials have frequency and amplitude that can be modulated to send information, and demodulated to receive that information. In the next section, we'll learn about frequency and amplitude modulation. We'll also learn about some other types of modulation that don't have a direct real-life connection to ropes. Modulation Frequency modulation Amplitude modulation Other modulation schemes Frequency allocation Baseband signal and carrier signals Bandwidth Bands and Channels Wireless Communication Protocols In the previous section on \"Communicating with Radio Waves\", we learned how we are able to transmit messages wirelessly over radio waves via modulation. We understood this through our analogy with friends A & B who came up with a way to send letters in their binary language (1 and 0) through a rope. Assuming they were able to do this successfully, they could send long streams of messages that look something like \"101011100101010101010\". But that's still not enough! They need to come up with a 'protocol' for deciphering what this message actually means! For example, they could come up with a simple protocol for sending messages about how their day went. * The first 3 letters would represent how their day went: \"101\" could mean that they had a good day, and \"010\" could mean that they had a bad day, and maybe \"110\" means that their day went okay. * The next 3 letters would represent the weather: \"100\" could mean that it was sunny and \"101\" could mean that it was rainy. We have these same types of protocols in real life that are much more complicated. They are carefully designed to ensure security (can people intercept messages?), reliability (what if the message gets messed up in certain places?), and efficiency (how much useful data can we send at a time?). WiFi Bluetooth Cellular communication","title":"Wireless Communication"},{"location":"learn/wireless-communication/#crash-course-in-wireless-communication","text":"Authored by: Dominick Ta Last updated: June 18th, 2021 TODO: [ ] Expand on transmit/receiving in antennas section [ ] Finish communication section [ ] Finish protocols section This is a crash course in wireless communication: the magical way that we humans send information (e.g. music, messages, text, videos) to each other over long distances, without a wire. Wireless communication is primarily powered by radio waves, a physical thing that we as humans cannot see or touch. In this article you will gain a layman's understanding of how wireless communication works. Specifically, this article will cover the following broad topics: Radio waves and the physics behind it Antennas How data is communicated via radio waves Examples of wireless communication technologies This is not meant to be a comprehensive article, so there will be a lot of simplifications, analogies, and informal explanations. Please let me know at domta@cs.uw.edu if you see any inaccuracies, misconceptions, or misnomers.","title":"Crash Course in Wireless Communication"},{"location":"learn/wireless-communication/#radio-waves","text":"Radio waves are just oscillations of energy that exist throughout our environment. They can be generated naturally by lightning, or artifically by equipment made by humans such as cell phones. The technical definition of radio waves are that they are a form of 'electromagnetic radiation'. Other types of electromagnetic radiation include visible light (what we get from the sun), infrared, and X-rays.","title":"Radio waves"},{"location":"learn/wireless-communication/#how-radio-waves-are-created","text":"To understand why radio waves are considered a type of electromagnetic radiation, it is helpful to know how we generate radio waves. This section is not important to fully understand, but it is good to skim to have a basic idea of how this stuff works. We create radio waves by moving electrons back and forth within an electrically conductive object (an object made of material that allows electrons to move freely, such as metals). This works because electrons have special properties: All electrons have ' electric fields ' surrounding them that attracts and repels other charged particles. All moving electrons produce ' magnetic fields ' that are the basis for how magnets work. Therefore, when electrons move there are two fields (electric & magnetic) present that combine to create creates an ' electromagnetic field '. By moving an electron back and forth in an oscillating (repetitive) motion, these electromagnetic fields are constantly being disturbed/moved in a way that creates electromagnetic waves or equivalently, electromagnetic radiation . In this GIF below, we see the charge of an antenna changing, representing electrons moving back and forth within the antenna. This creates pulsating electromagnetic waves. Note: in this particular GIF, it is actually only showing the pulsating electric fields. In this GIF below, we are able to fully see an electromagnetic wave with a 3D representation. The red component of the wave represents the electric field, while the blue component represents the magnetic field. Notice how they are perpendicular to each other! This is also why the GIF above didn't show both fields: it was a 2D representation! In this section, we learned about radio waves. In essence, you can just think of radio waves as physical phenomenon that look like these sine waves: With the proper hardware and knowledge, we can create any type of wave we want! We can vary frequencies (how fast the waves go by), amplitudes (how tall/powerful the waves are), and phases (what position within the loop the wave is in).","title":"How radio waves are created"},{"location":"learn/wireless-communication/#frequency-wavelength","text":"It turns out that a fundamental characteristic of any given radio wave is its frequency. Therefore, it's important to know what 'frequency' means, and how it relates to the concept of 'wavelength'. Frequency is a measurement of how often something happens. In the case of radio waves, it measures how many cycles of a radio wave occurs in a certain amonut of time. Frequency is measured in the units of hertz (Hz) , which represents cycles per second. If we had a radio wave that passed through 10 complete cycles in a minute, it would have a frequency of 0.16Hz (10 cycles per 60 seconds). Wavelength measures the physical length of a single cycle in a radio wave. If we could see radio waves and measure it, and we saw that there was a distance of 10-feet between two of the peaks in a radio wave, then that radio wave would have a wavelength of 10 feet. In the image above, we can see a natural relationship between frequency and wavelength: a faster frequency means that you will have shorter wavelengths! Or conversely, longer wavelengths means that there is a slower frequency! When one value goes up, the other value has to go down; this is called an inverse relationship . So if I told you that I had a radio wave with a very high frequency, you could figure out that my radio wave has very small wavelengths. And actually, if I told you exactly what frequency my radio waves travelled at, you'd be able to figure out the exact size of the wavelength! For example, if I told you I had a radio wave with a frequency of 10Hz, you would be able to figure out that my radio wave has a wavelength of approximately 30,000,000 meters. This is because radio waves are a physical thing, so they always travel through air at the same speed: the speed of light. This means we can consistently convert back and forth between frequency and wavelength with some basic algebra. The basic equation, where c is the speed of light (3.0 x 10^8 m/s), is: frequency (Hz) * wavelength (m) = c So given a radio wave with a frequency of 10Hz, to solve for wavelength, I just need to take the speed of light and divide by 10! 30,000,000 divided by 10 gives a value of a wavelength of 30,000,000 meters. To summarize this section, frequency and wavelength are important properties of radio waves. Although they describe different aspects of a radio wave, they are essentially synonymous because we can easily convert between the two. When people are talking about radio waves, you may hear them talk in terms of frequencies (e.g. megahertz, gigahertz) or you may hear them talk in terms of wavelengths (e.g. meters). In the next section, we'll see why exactly frequency is such an important characteristic of radio waves.","title":"Frequency & Wavelength"},{"location":"learn/wireless-communication/#how-we-distinguish-between-radio-waves","text":"An important thing to remember about radio waves is that nowadays they surround us everywhere we go! Radio waves are powerful because they can go through obstacles like walls, and they can potentially propagate over huge distances at a relatively cheap cost. Radio waves are used to communicate information in technologies such as GPS, WiFi, Bluetooth, cell phones, music radio stations, and more. The problem with this is that these radio waves interfere with each other and combine together to become a jumbled mess! They are all co-existing within the same space, and they can't avoid each other. In real life we don't get to have nice, simple, isolated radio wave like in the previous sections, we get a mix of radio waves coming all at once! And somehow, we have to find and narrow down the signal we care about. Imagine you are at an airport and you're trying to talk to your friend, but it is super crowded and theres people talking and shouting all around you. It would be super hard to hear your friend and have a conversation! (In this situation the people represent devices that use radio waves, the sound waves represent radio waves, and the voices & words represent the data we want to transmit) But if your friend talks loud enough, even though your ear is full of noise from everyone else in the airport, you can still figure out what your friend is trying to tell you. This is because you're smart enough to recognize what your friend's voice sounds like and you can focus on that voice. We can do the same thing with radio waves of different frequencies! (Being able to focus on your friend's specific voice is analogous to being able to focus on only radio waves of a specific frequency) In the image below, we can see a red radio wave. This radio wave is actually the combination of 5 radio waves of different frequencies! In the blue, we see this same signal analyzed and split into the individual components, located at its respective frequencies. (Analogy: 5 people talking at the same time, what your ears hear is the red. Your brain recognizing that these are 5 different voices is the blue) The mathematical process of going from the red representation (the signal in the time domain) to the blue representation (the signal in the frequency domain) is called the \"Discrete Fourier Transform\". You may also hear about something called the \"Fast Fourier Transform\" which is the discrete fourier transform, but a very clever and fast way to calculate it. (Intuitively, the DFT/FFT is essentially comparing a bunch of sine waves of varying frequencies to the signal detected, and calculating how similar they are. This would be like your brain iterating through all possible human voices and checking to see how strongly your ears hear that particular voice) This means that even though there may be a jumbled mess of radio waves surrounding us at all times, if they are radio waves of different frequencies, we are able to distinguish between all these different frequencies using some old fashioned engineering. This non-trivial fact is what allows our world to have so many different types of devices communicating wirelessly all at the same time! They are all using radio waves, all in the same space, but at different frequencies! This is why radio waves are identified by their frequency (or wavelength).","title":"How we distinguish between radio waves"},{"location":"learn/wireless-communication/#summary","text":"In this section on radio waves, we learned about what they are, the basics of how they're produced, frequency & wavelength, and how we distinguish between different radio waves co-existing in the same space. These are the fundamental concepts behind the physics of radio waves that engineers take advantage of. In the next section on antennas, we will learn what they are and how they are used to efficiently propagate/send radio waves. In another section, we will learn more about how exactly we manipulate radio waves to convey the information we want to send.","title":"Summary"},{"location":"learn/wireless-communication/#antennas","text":"We use antennas in our everyday lives, but most people don't know how they work. We use antennas on cars, on buildings, and even within our computers and phones!","title":"Antennas"},{"location":"learn/wireless-communication/#how-they-work","text":"","title":"How they work"},{"location":"learn/wireless-communication/#material-properties","text":"Antennas are all made up of electrically conductive material. This usually means antennas are made out of metals like copper. Materials that are electrically conductive allow electrons to freely move throughout it. The opposite type of material would be electrically insulating material. As a real-life analogy, imagine a typical swimming pool filled with water. A normal pool like this allows people to freely swim through it! In this analogy the water represents electrically conductive material and people represent electrons. Now imagine a piece of copper metal as being that pool of water. Because copper is electrically conductive, electrons can freely move through it! An analogy for an electrically insulating material would be a swimming pool filled with jello/pudding/gelatin. If someone tried diving into that pool, they wouldn't get very far and it'd be super hard or impossible to swim through it. In this analogy the jello/pudding/gelatin represents electrically insulating material and people represent electrons. Now imagine a piece of plastic being that pool of water. Because plastic is electrically insulating, eletrons are mostly stuck where they are inside the plastic!","title":"Material properties"},{"location":"learn/wireless-communication/#taking-advantage-of-moving-electrons","text":"Antennas need to be electrically conductive because they transmit and receive radio waves by taking advantage of the movement of electrons. In the above section on \"How radio waves are created\" we learned that radio waves are generated by moving an electron back and forth in an oscillating (repetitive) motion. This oscillation of electrons occurs in the antennas. If antennas weren't electrically conductive, these electrons wouldn't be able to move and create these radio waves!","title":"Taking advantage of moving electrons"},{"location":"learn/wireless-communication/#how-transmitting-with-an-antenna-works","text":"In order to transmit with an antenna, the antenna needs to be connected to an electrical component that can control the movement of these electrons. TODO: expand/clarify?","title":"How transmitting with an antenna works"},{"location":"learn/wireless-communication/#how-receiving-with-an-antenna-works","text":"Antennas receive radio signals passively. As the electromagnetic fields are manipulated in the environment around an antenna, the electrons in the antenna move accordingly (because of how the physics of it work). By monitoring the movement of these electrons, the respective radio wave can be captured. TODO: expand/clarify?","title":"How receiving with an antenna works"},{"location":"learn/wireless-communication/#communicating-with-radio-waves","text":"How do we as humans harness this power of manipulating radio waves as communication? We agree on a bunch of different rules and conventions on how we will manipulating these radio waves to convey information efficiently and responsibly. In the United States, most of these rules are established and enforced by the Federal Communications Commission (FCC).","title":"Communicating with radio waves"},{"location":"learn/wireless-communication/#an-analogy","text":"To lay a conceptual foundation for this relatively abstract section, here is an analogy. Suppose we have two friends with the simple names of \"A\" and \"B\" that want to talk to each other over a distance, but they cant see, hear, or touch each other over that distance. The only way method of communication they have is a really long piece of rope between them. So once they travel far away from each other, they will each be holding one end of the rope and will be trying to communicate. But before they travel far away from each other, they need to talk to each other to figure out a set of rules of communication so that they can understand each other when they feel the rope moving. When coming up with these rules for communication, one of the first things that A & B need to do is come up with a language. Because A & B really like computers, they chose the language of computers: binary. They chose this language because it is super simple and effective; it only has two letters (1 and 0) and you can send tons of information by being clever with 1s and 0s (thats what computers do). Now the next thing that A & B needs to do is figure out how to use the rope to send these 1s and 0s. Here are some ideas they brainstormed together: * If the rope is moving up and down (oscillating), then that is considered a 1. If the rope is not moving, then that is considered a 0. * If the rope is oscillating super fast then that's a 1, but if the rope is oscillating slowly then that's a 0. * If the rope is oscillating super fast then that's a 0, but if the rope is oscillating slowly then that's a 1. * If the rope is oscillating with a big height then that's a 1, but if the rope is oscillating with small height then that's a 0. A & B realized two properties of the movement of the rope that they could capture: (1) frequency, how fast the rope is oscillating, and (2) amplitude, how tall the rope is when its oscillating. The term for manipulating these properties is \"modulation\". This makes sense because a dictionary definition of modulation is \"to adjust\"; modulation is just a fancy word for changing. In this analogy, the material/medium of communication was the rope. But in our context, the material/medium of communication is radio waves. Both of these materials have frequency and amplitude that can be modulated to send information, and demodulated to receive that information. In the next section, we'll learn about frequency and amplitude modulation. We'll also learn about some other types of modulation that don't have a direct real-life connection to ropes.","title":"An analogy"},{"location":"learn/wireless-communication/#modulation","text":"","title":"Modulation"},{"location":"learn/wireless-communication/#frequency-modulation","text":"","title":"Frequency modulation"},{"location":"learn/wireless-communication/#amplitude-modulation","text":"","title":"Amplitude modulation"},{"location":"learn/wireless-communication/#other-modulation-schemes","text":"","title":"Other modulation schemes"},{"location":"learn/wireless-communication/#frequency-allocation","text":"","title":"Frequency allocation"},{"location":"learn/wireless-communication/#baseband-signal-and-carrier-signals","text":"","title":"Baseband signal and carrier signals"},{"location":"learn/wireless-communication/#bandwidth","text":"","title":"Bandwidth"},{"location":"learn/wireless-communication/#bands-and-channels","text":"","title":"Bands and Channels"},{"location":"learn/wireless-communication/#wireless-communication-protocols","text":"In the previous section on \"Communicating with Radio Waves\", we learned how we are able to transmit messages wirelessly over radio waves via modulation. We understood this through our analogy with friends A & B who came up with a way to send letters in their binary language (1 and 0) through a rope. Assuming they were able to do this successfully, they could send long streams of messages that look something like \"101011100101010101010\". But that's still not enough! They need to come up with a 'protocol' for deciphering what this message actually means! For example, they could come up with a simple protocol for sending messages about how their day went. * The first 3 letters would represent how their day went: \"101\" could mean that they had a good day, and \"010\" could mean that they had a bad day, and maybe \"110\" means that their day went okay. * The next 3 letters would represent the weather: \"100\" could mean that it was sunny and \"101\" could mean that it was rainy. We have these same types of protocols in real life that are much more complicated. They are carefully designed to ensure security (can people intercept messages?), reliability (what if the message gets messed up in certain places?), and efficiency (how much useful data can we send at a time?).","title":"Wireless Communication Protocols"},{"location":"learn/wireless-communication/#wifi","text":"","title":"WiFi"},{"location":"learn/wireless-communication/#bluetooth","text":"","title":"Bluetooth"},{"location":"learn/wireless-communication/#cellular-communication","text":"","title":"Cellular communication"}]} \ No newline at end of file