Working with open source projects is all about having table manners. There is an expected behavior for individuals and companies to have.
Most open source projects create mailing lists and FAQs. The mailing list exists for you to ask questions that are not answered in the FAQ for the project. Mailing lists often have archives, these should be searched before asking questions. Be polite when asking questions, and offer to document the solution to your question.
Take an open approach to getting your code or designs accepted by the project. I often hear "we spoke to one of the maintainers" or "we wrote twenty thousand lines of code and then they refused to take it when we offered to donate it". Before writing any code, discuss your intentions with the widest distribution model possible. Keep people from being surprised. Tailor your code around how code already works in the project. If there are no clear guidelines offer to write them down based on what the project is doing. A little leg work on your part shows that you wish to be a good citizen.
Doing work outside of your own needs, shows you wish to be a good contributor to the project. For example, this can be done by reviewing other people's code or by writing documentation.
Finally, do not expect anyone to do anything for free. Most groups wish to improve on their projects, but having "enough time" is always an issue. Be open to offering money, time, or resources in order to get your problem solved. Realize that for what you offer there may be a down side as well for the project.
Free hardware still has to be installed and properly setup. Money may be an issue because of foreign currency exchanges or because it complicates the individuals taxes. Offering people can be good, but realize that then the project will have to take the burden of training and answering questions.
Having good table manners is the key to working with open source projects.