Tuesday, May 20, 2014

Arduino on CentOS-6

I decided it was high time that I found a way to turn on my new TV automatically. After much research I decided that an arduino based IR Blaster was the way to go. I happen to have a Freetronics LeoStick which was given out a LCA in Ballarat a few years ago.

I recall at the time I could not get the arduino software to work on Linux (CentOS-5) so I resorted to using a Windows VM with USB passthru.

That was not going to cut it this time. I was going to use my full stubbornness to get it working on CentOS-6.

First of all, I had to get a copy of the IDE in RPM format. There was talk on the internet about just such a thing but I could not find an EL6 version. In the end I selected the Fedora 19 version which is suitable. The files needed are:
  • arduino-1.0.5-6.fc19.noarch.rpm
  • arduino-doc-1.0.5-6.fc19.noarch.rpm
  • arduino-core-1.0.5-6.fc19.noarch.rpm

There are also a number of other dependancies because the IDE does not actually do much. Luckily the other bits are all in CentOS-6 or EPEL so using yum you can get it installed without too much trouble.

Running the IDE however is rigged with rubbish about adding your user account to certain groups. This seems antiquated to me and I refuse to do it. There must be a better way.

An ideal solution would be that the USB devices are assigned to the console owner and it would just work like any other peripheral. The way to implement that changes with every version of RHEL/CentOS but after some sleuthing, I found the answer for version 6 and it is no too difficult.

To get this working there are four jobs:
  • Make sure the USB device ID is known to the USB TTY driver
  • Set the appropriate permissions with udev
  • Remove the restrictions on locking the device
  • Configure the IDE
The first job is not immediately obvious and may not be applicable on all versions of Linux. On CentOS-6 (6.5) is was necessary. As if by magic or just infuriating design, the USB device ID of your arduino can change depending on what it is doing. This can be exploited for good, say if you wanted to build a USB keyboard or mouse but if you are using the default serial emulation then it seems unnecessary. For me, the default id used by the boot loader (26ba:0002) is automatically recognised as a serial device and /dev/ttyACM0 is created (by the cdc_acm driver) but when my sketch is running, the id (26ba:8002) is not recognised. This means the device goes away which confuses the arduino tools (and me). This is easily fixed by running this command as root:
echo "0x26ba 0x8002" >> /sys/bus/usb/drivers/cdc_acm/new_id
For your board, the IDs may well be different so you much check with dmesg or lsusb.

This needs to be done after every reboot so it should be added to an init script
modprobe cdc_acm
echo "0x26ba 0x8002" >> /sys/bus/usb/drivers/cdc_acm/new_id
TODO: is there is proper place for this? modprobe.conf? /etc/sysconfig/modules/arduino? For now, /etc/rc.d/rc.local will do.
Device permissions on CentOS-6 are managed by udev. Most devices use the traditional user, group and permissions. However, devices which are shared (for example, with console users) are managed using ACLs. (check with ls -l /dev/ | grep +).

In order to set the permissions, the correct devices must be identified. For me, the device name is /dev/ttyACM0 but this does not hang round for long (remember about the changing ids?). It is only present while the arduino bootloader is running. dmesg can give you a hint but the easiest way to check the device name is the plug in the stick and immediately run ls -l /dev/tty*

Once you know the device name you can interigate it with udev
udevadm info -a -n /dev/ttyACM0
Again you must run this immediatly after plugging in the USB stick.
It will output many properties of the device from which you must find something unique. At first I though that 'ATTRS{manufacturer}=="Freetronics"' was a good value to check for but it turns out that when your sketch is running, that string is not present. Better is to use the USB vendor ID 'ATTRS{idVendor}=="26ba"'.  While I was at it, I also added the Arduino vendor code of 20a0. I could then make a new udev rule by creating the file:
/etc/udev/rules.d/52-arduino.rules
and adding the contents:
ATTRS{idVendor}=="26ba", ENV{ACL_MANAGE}="1"ATTRS{idVendor}=="20a0", ENV{ACL_MANAGE}="1"

Some sources also recommend preventing the Modem Manager from probing the device. You can do that by adding this line too

ATTRS{idVendor}=="26ba", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="20a0", ENV{ID_MM_DEVICE_IGNORE}="1"

Once the file is in place, you can force the rules to be applies with the command
udevadm trigger

Now check the device with ls -l again (immediately after plugging in the stick) and it should look like this (with a + sign)
crw-rw----+ 1 root dialout 166, 0 Apr 24 23:08 /dev/ttyACM0

If so, check the ACL with  getfacl /dev/ttyACM0
getfacl: Removing leading '/' from absolute path names
# file: dev/ttyACM0
# owner: root
# group: dialout
user::rw-
user:jnewbigin:rw-
group::rw-
mask::rw-
other::---


Note that my username jnewbigin is granted access. You should of course see your username there. If so, job done.

The next headache is device locking. The default rxtx library wants to write to a directory it does not have permissions on. Fixing this was painful. All I wanted was a simple way to skip the locking phase in the rxtx library. I had hoped that there would be an environment variable which could tune the locking. According to the documentation, the only way to turn locking off is by recompiling. Luckily the srpm is easily modified. You can download my lock free version of rxtx from http://www.chrysocome.net/download

Almost done. I would have though that configuring the IDE should not be required but as it happens, you must edit ~/.arduino/preferences.txt and change
serial.port=/dev/ttyACM0

So now we have removed the requirements to add your user into the unnecessary groups. The script which runs the IDE (arduino) however still complains that you are not a member. The best solution would be to rebuild the rpm without that check (and add in the udev rules) but for now you can either select Ignore or edit /usr/bin/arduino and change the line
for group in dialout lock; do
to
for group in ; do

Perhaps I will repackage it with these changes.


And stay tuned for the working IR blaster code!

216 comments:

  1. Nice write-up! If you want to promote your blog site for free, leave a comment at http://www.coreforceworldwide.com/why-we-write-for-you/

    ReplyDelete
  2. I regularly visit your site and find a lot of interesting information. Not only good posts but also great comments. Thank you and look forward to your page growing stronger gmail login

    ReplyDelete
  3. Thank you for your post, I look for such article along time, today i find it finally. this post give me lots of advise it is very useful for me

    outlook entrar

    ReplyDelete
  4. Very helpful advice in this particular post! It’s the little changes that make the largest changes. Thanks for sharing!
    Fireboy And Watergirl

    ReplyDelete
  5. Wow amazing its looking great. Thanks for sharing I will try.
    I really want to try this. Mcafee Activate

    ReplyDelete
  6. It's a very Informative post to us. I bookmarked this post for your future reference. I have never felt so good. McAfee.com/activate

    ReplyDelete
  7. Mcafee offers an advanced security solution for users. and if you have any issues regarding the McAfee, You can visit our official website. McAfee Support

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. Good post. I learn something totally new and challenging on blogs Quickbooks online support

    ReplyDelete

  10. Thanks for such a good articles it really helped me after reading your posts. McAfee setup

    ReplyDelete
  11. this is the best informative and usefull blog for me about linux.linus is the bestest networking software standard deviation formula thank you so much for sharing this with us

    ReplyDelete
  12. When your website or blog first appears, it's interesting. That is until you realize no one but you and you. Play room clicker clickerheroes.games game

    ReplyDelete
  13. If you have good quality images and that you want to convert JPG to PDF it is very easy to convert. Use our online jpg to pdf converter, so you can convert any image with the help of the type of PDFs with ease.
    how to convert jpg to pdf

    ReplyDelete
  14. The most exact python scientific notation has no prescience that somewhat incalculable may not balk the very next moment.

    ReplyDelete
  15. I will carefully read the issues you just shared, I find there are some places that are not very clear visit here

    ReplyDelete
  16. Mr Thorneycroft, 43, doused deadly embers while 20 women and children sheltered in the Kinglake National Park Hotel coolroom with their pets.
    https://mostpopularwomen.info/

    ReplyDelete
  17. I have also now made the track available for download in either WMA or MP3 format. Mp3 Rocket Torrent

    ReplyDelete
  18. I wanted to thank you for this informative analysis of the Subway Surfers online game. I definitely savored every little bit of it and I submitted your site to some of the biggest social networks so others can find your blog.

    ReplyDelete
  19. Install Arduino IDE 1.8.2 on Linux. By patrickthecreator in CircuitsLinux. 55,570. 14. 6. license.

    source

    ReplyDelete
  20. This post is discussing in an outstanding way. I like your way yo discussed your valid points and facts about this. McAfee Activate

    ReplyDelete
  21. I really said one thing is you share your personal knowledge with us that was the great thing. I really appreciate this thing. windows audio device graph isolation

    ReplyDelete
  22. is the best digital marketing company in Delhi NCR. we are giving our services like a digital marketing agency, SEO company, and Best graphic designing services in Delhi NCR, Best SMM Serc in all over Delhi, SEO services in Delhi Faridabad Noida, and Gurgaon. Best SMM Services in delhi

    ReplyDelete
  23. You topic is very great and useful for me…thank you
    click on here

    ReplyDelete
  24. Aqui tienen si les interesa plantillas gratis para decargar

    curriculum vitaes y pueden editarlos ustedes mismos , los

    invito a pasar por mi web sobre plantillas y curriculums vitae

    gratuitos para bajar cv
    Espero haber aportado a la comunidad!

    ReplyDelete
  25. Wow! thanks for this good innfo

    ReplyDelete
  26. This day is always celebrates on the 1st date of every year and all countries are enjoy this day on same date. Day is different is each year but the date is same on each year. Use these images, that we have already share with you and your friends on coming holiday. Must download advance Happy New Year Status 2021 images with quotes for your friends and family members.

    ReplyDelete
  27. I want to express my gratitude to you. I hope you don't just overlook it and read my article well. I solved my problem. Please visit my site and write.먹튀검증커뮤니티

    ReplyDelete
  28. Great work man you have post a great post it will help people very much keep it do more for people like that.

    카지노사이트
    먹튀검증
    스포츠토토
    토토사이트

    ReplyDelete
  29. It was really good work. I really like your thoughts. I personally appreciates for your work. your article is very impressive and helpful for us. .. Thanks

    사설토토
    바카라사이트
    파워볼

    ReplyDelete
  30. something that is remarkable and should be learned. Thank you for providing this great information

    토토
    온라인카지노
    파워볼사이트

    ReplyDelete
  31. I am overwhelmed by your post with such a nice topic. Usually I visit your 안전놀이터 and get updated through the information you include but today’s blog would be the most appreciable. Well done!

    ReplyDelete
  32. I'm writing on this topic these days, , but I have stopped writing because there is no reference material. Then I accidentally found your article. I can refer to a variety of materials, so I think the work I was preparing will work! Thank you for your efforts. 토토커뮤니티

    ReplyDelete
  33. Thanks for ones marvelous posting! I really enjoyed reading it, you might be a great author.
    I will be sure to bookmark your blog and will eventually come back later on.토렌트순위

    ReplyDelete
  34. I must say you have written a great article. The way you have described everything is phenomenal. If you have time, please visit my site 파워볼 하는법

    ReplyDelete
  35. This article presents clear idea designed for the new visitors of blogging, that in fact how to do blogging and site-building. 온라인경마

    ReplyDelete
  36. Article writing is also a fun, if you know then you can write otherwise it is complex to write.Look at my site 파친코

    ReplyDelete
  37. Thanks designed for sharing such a pleasant thinking, piece of writing is good, thats why i have read it entirely 휴게텔

    ReplyDelete
  38. Great ideas and great information. Worth writing very well seen. Tips for you to continue posting better are on my website. It will definitely help you a lot. 안전놀이터

    ReplyDelete
  39. Hello. I love the way you write. Would you like to guestpost my website? There are a lot of people on my website who visit me in relation to your writing. It will definitely be a great opportunity. 먹튀검증

    ReplyDelete
  40. This is a great post with great information. Bookmarked your blog. We hope you will continue to post these good information frequently. 안전놀이터

    ReplyDelete
  41. 카지노사이트 Nice post. I was checking constantly this weblog and I’m inspired!

    Very helpful info particularly the remaining section 🙂 I maintain such info a lot.
    I used to be looking for this particular information for a very long time.
    Thank you and good luck.

    ReplyDelete
  42. 온라인카지노 Wow, fantastic blog layout! How long have you been blogging for?
    you make blogging look easy. The overall look of your site
    is wonderful, let alone the content!

    ReplyDelete
  43. 스포츠토토 It was wondering if I could use this write-up on my other website, I will link it back to your website though.Great Thanks.



    Really a great post, thanks


    ReplyDelete
  44. 스포츠토토 Hello it’s me, I am also visiting this web page on a regular
    basis, this web site is actually fastidious and the users are really sharing
    fastidious thoughts.

    ReplyDelete
  45. I found the answer I was looking for in your article. I'm going to quote your article and write it on a blog. 바카라사이트

    ReplyDelete
  46. I am contemplating this topic. I think you can solve my problems. My site is at "카지노사이트". I hope you can help me.

    ReplyDelete
  47. My programmer is trying to convince me to move to .net from 메이저놀이터. I have always disliked the idea because of the expenses. But he's tryiong none the less.

    ReplyDelete
  48. I haven't seen anything interesting in a long time, and I'm writing on this form, so I hope to see you.토토사이트

    ReplyDelete
  49. Everyone loves it when folks come together and share opinions.
    Great site, stick with it! 토토사이트

    ReplyDelete
  50. It’s awesome to pay a visit this web page and reading the views of all colleagues concerning
    this piece of writing, while I am also zealous of getting knowledge. 경마

    ReplyDelete
  51. I need to to thank you for this fantastic read!! I definitely loved every little bit of it. I’ve got you saved as a favorite to look at new stuff you post… 바카라사이트

    ReplyDelete
  52. I blog frequently and I truly thank you for your information. This article has really peaked my interest.
    I will take a note of your site and keep checking for new details about once a week.
    I subscribed to your Feed too. 토토

    ReplyDelete
  53. I got a web site from where I be capable of really obtain valuable information regarding my study and knowledge.
    Great Article… Good Job… Thanks For Sharing…바둑이사이트

    ReplyDelete
  54. After looking into a few of the blog posts on your site, I seriously appreciate your way of blogging 카지노사이트

    ReplyDelete
  55. Hey there, You’ve done an excellent job. I will definitely digg it and personally suggest to my friends. I’m confident they will be benefited from this website.카지노사이트

    ReplyDelete
  56. Pretty nice post. I just stumbled upon your weblog and wished to say that I have truly enjoyed surfing around your blog posts. In any case I will be subscribing to your rss feed and I hope you write again soon 안전놀이터

    ReplyDelete
  57. Thank you and thank you so much. I'll share you useful information.토토사이트

    ReplyDelete
  58. This is Very very nice article. Everyone should read. 파워볼게임

    ReplyDelete
  59. Good post, thanks for sharing.. very useful for me, I will bookmark this for my future needs. I would like to thank you for the efforts you have made in writing this article and I am hoping the same best work from you in the future as well. 경마

    ReplyDelete
  60. It is extremely nice to see the greatest details presented in an easy and understanding manner 슬롯머신

    ReplyDelete
  61. This is also a very good post which I really enjoyed reading. It is not every day that I have the possibility to see something like this. 대딸방

    ReplyDelete
  62. It's always a pleasure to read your magnificent articles on this site. You are among the top writers of this generation, and there's nothing you can do that will change my opinion on that. My friends will soon realize how good you are. 온라인포커

    ReplyDelete
  63. So it is interesting and very good written and see what they think about other people. Very good topic, similar texts are I do not know if they are as good as your work out. 바카라사이트

    ReplyDelete
  64. Your ideas inspired me very much. 토토커뮤니티It's amazing. I want to learn your writing skills. In fact, I also have a website. If you are okay, please visit once and leave your opinion. Thank you.

    ReplyDelete
  65. Your ideas inspired me very much. It's amazing. 토토사이트 I want to learn your writing skills. In fact, I also have a website. If you are okay, please visit once and leave your opinion. Thank you.

    ReplyDelete
  66. Your writing is perfect and complete. 온라인바둑이 However, I think it will be more wonderful if your post includes additional topics that I am thinking of. I have a lot of posts on my site similar to your topic. Would you like to visit once?

    ReplyDelete
  67. In my opinion, the item you posted is perfect for being selected as the best item of the year. You seem to be a genius to combine 안전놀이터 and . Please think of more new items in the future!

    ReplyDelete
  68. From some point on, I am preparing to build my site while browsing various sites. It is now somewhat completed. If you are interested, please come to play with 바카라사이트!!

    ReplyDelete
  69. Hahaha, good, good. The writing is interesting.토토사이트 Look at my writing.

    ReplyDelete
  70. Are you the one who studies this subject?? I have a headache with this subject.카지노사이트Looking at your writing was very helpful.

    ReplyDelete
  71. Having read this I believed it was extremely enlightening. I appreciate you spending some time and effort to put this short article together. 토토사이트

    ReplyDelete
  72. Yes i am totally agreed with this article and i just want to say that this article is very nice and very informative. 경마사이트

    ReplyDelete
  73. Thank you for sharing your article and I hope you will share some more information about this.. keep sharing! 토토사이트

    ReplyDelete
  74. I am interested in this area if you are a great site but know some community forums. I think it should be a good opportunity to get feedback from others who are experienced. 온라인섯다

    ReplyDelete
  75. Someone necessarily help to make severely articles I might state. That is the first time I frequented your web page and up to now? I surprised with the analysis you made to create this actual publish extraordinary. Fantastic process 안전놀이터

    ReplyDelete
  76. Thanks for sharing excellent informations. Your web-site is very cool. I’m impressed by the details that you have on this site. It reveals how nicely you understand this subject. Bookmarked this web page, will come back for more articles. You, my pal, ROCK! I found simply the information I already searched all over the place and simply couldn’t come across. What a great web-site.

    스포츠토토

    ReplyDelete
  77. Useful information. Lucky me I found your web site by chance, and I’m shocked
    why this coincidence did not took place earlier! I bookmarked it.
    바카라

    ReplyDelete
  78. Hi there to all, because I am truly eager of reading this blog’s post to be updated regularly.

    It carries good data.

    바카라사이트

    ReplyDelete
  79. When I read an article on this topic, 온라인바둑이 the first thought was profound and difficult, and I wondered if others could understand.. My site has a discussion board for articles and photos similar to this topic. Could you please visit me when you have time to discuss this topic?

    ReplyDelete
  80. I've proper selected to build a blog, which I hold been deficient to do for a during. Acknowledges for this inform, it's really serviceable!온라인바둑이

    ReplyDelete
  81. Great beat ! Ӏ wish to apprentice ԝhile yoᥙ amend your site, һow could
    i subscribe for a blog site? Ꭲhe account helped me a acceptable deal.온라인카지노

    ReplyDelete
  82. Looking forward to reading more. Great article.Really thank you! Will read on온라인카지노

    ReplyDelete
  83. Really informative post. I personally thought the written post is well suited and trouble-free for me to go after provided guideline. visit this site to find out more 온라인카지노

    ReplyDelete
  84. I like the helpful info you provide in your articles. I’ll bookmark your blog and check again here frequently. I’m quite sure I’ll learn plenty of new stuff right here! Good luck for the next. 토토사이트

    ReplyDelete
  85. Hello There,I found your blog.I will make sure to bookmark it .온라인카지노

    ReplyDelete
  86. The website style is great, the articles is really excellent 온라인카지노

    ReplyDelete
  87. Well done information.thanks for the excellent article. 온라인카지노

    ReplyDelete
  88. Hard to ignore such an amazing article like this. You really amazed me with your writing talent. Thank you for sharing again.
    카지노사이트

    ReplyDelete
  89. It’s so good and so awesome. I am just amazed. I hope that you continue to do your work like this in the future also.
    바카라사이트

    ReplyDelete
  90. We are really grateful for your blog post for giving a lot of information
    토토사이트

    ReplyDelete
  91. I do agree with all of the ideas you’ve presented in your post.
    카지노사이트

    ReplyDelete
  92. 바카라사이트 Believe in yourself and make it happen. Wishing you all the best! I’m pretty confident that you’ll do well.

    ReplyDelete
  93. 카지노사이트 Now you’ve figured it out, that’s really nice work! It looks like you’ve put a lot of work into this.

    ReplyDelete
  94. 샌즈카지노 You certainly did well today. That’s an interesting way of looking at it, I’ve never seen anyone do it better.

    ReplyDelete
  95. 카지노게임사이트 That looks like it is going to be a great paper, couldn’t have done it better myself. What a neat work!

    ReplyDelete

  96. I am interested in this area if you are a great site but know some community forums. I think it should be a good opportunity to get feedback from others who are experienced. 토토사이트

    ReplyDelete
  97. As I am looking at your writing, 온라인바둑이 I regret being unable to do outdoor activities due to Corona 19, and I miss my old daily life. If you also miss the daily life of those days, would you please visit my site once? My site is a site where I post about photos and daily life when I was free.

    ReplyDelete
  98. It's too bad to check your article late. I wonder what it would be if we met a little faster. I want to exchange a little more, but please visit my site 바카라사이트 and leave a message!!

    ReplyDelete
  99. Thank you for any other informative blog. Where else may just I am getting that kind of information written in such a perfect method? I have a mission that I’m simply now working on, and I have been on the glance out for such info. 먹튀검증

    ReplyDelete
  100. I hope you also visit my blog and give us a good opinion.온라인카지노

    ReplyDelete
  101. 카지노사이트
    Seriously love your blog.Visit my link as well..

    ReplyDelete
  102. I’m not sure exactly why but this weblog is loading incredibly slow for me. Is anyone else having this problem or is it a problem on my end? I’ll check back later on and see if the problem still exists. 안전놀이터

    ReplyDelete
  103. Looking at this article, I miss the time when I didn't wear a mask. 온라인바둑이 Hopefully this corona will end soon. My blog is a blog that mainly posts pictures of daily life before Corona and landscapes at that time. If you want to remember that time again, please visit us.

    ReplyDelete
  104. I like the helpful info you provide in your articles. I’ll bookmark your blog and check again here frequently. I’m quite sure I’ll learn plenty of new stuff right here! Good luck for the next. 토토사이트추천

    ReplyDelete
  105. Hey There. I found your blog using msn. This is a very well written article. I’ll be sure to bookmark it and come back to read more of your useful info. Thanks for the post. I’ll definitely return. 안전놀이터

    ReplyDelete
  106. Papers get to operate through Bible helpers and also plagiarism checkers to be certain that the author did not find idle at any stage in the process. Language inconsistencies won't be a thing with your newspapers as the specialists of our school paper writing support are passionate about writing and are always excited to strike you with something fresh. By: 안전놀이터

    ReplyDelete
  107. Wow, What an Outstanding post. I found this too much informatics. It is what I was seeking for. I would like to recommend you that please keep sharing such type of info.If possible, Thanks. 안전놀이터

    ReplyDelete
  108. It's really great. Thank you for providing a quality article. There is something you might be interested in. Do you know 바카라사이트? If you have more questions, please come to my site and check it out!

    ReplyDelete
  109. Your writing is perfect and complete. 온라인바둑이 However, I think it will be more wonderful if your post includes additional topics that I am thinking of. I have a lot of posts on my site similar to your topic. Would you like to visit once?

    ReplyDelete
  110. Very well written information. It will be beneficial to anybody who utilizes it, including me. Keep doing what you are doing – for sure i will check out more posts. ufa slot

    ReplyDelete
  111. Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man and Thanks for the post,Interesting stuff to read. Keep it up.
    온라인카지노사이트

    ReplyDelete
  112. It’s very excellent information and more real facts to provided that post. Thank you for sharing this information.
    카지노사이트윈

    ReplyDelete
  113. Thanks for posting this educative writeup. I really like your means of blogging.
    온카지노사이트인포

    ReplyDelete
  114. Keep up the good work , I read few blog posts on this website and I believe that your weblog is rattling interesting. Thank you for this effort, I will give you 5 stars for this. Kindly check the link below Thank you!
    토토사이트핫

    ReplyDelete
  115. Hi to every body, it's my first 토토사이트 a quick visit of this webpage; this weblog consists of awesome and really fine stuff for visitors.

    ReplyDelete
  116. I've been looking for photos and articles on this topic over the past few days due to a school assignment, and I'm really happy to find a post with the material I was looking for! I bookmark and will come often! Thanks :D 바둑이사이트

    ReplyDelete
  117. As I am looking at your writing, I regret being unable to do outdoor activities due to Corona 19, and I miss my old daily life. If you also miss the daily life of those days, would you please visit my site once? My site is a site where I post about photos and daily life when I was free.토토커뮤니티

    ReplyDelete
  118. It's been a while since I've read this heart-throbbing post.사설토토사이트 I look forward to your kind cooperation.

    ReplyDelete
  119. I don't think I've seen so many wonderful writings in my life, but today is the best day.먹튀검증사이트

    ReplyDelete
  120. You're getting to know the truth. I'm gonna have to come by more often.안전토토사이트

    ReplyDelete
  121. That’s why marketing and advertising that you simply applicable exploration previous to publishing. 야동비즈

    ReplyDelete
  122. If more people that write articles really concerned themselves with writing great content like you, more readers would be interested in their writings. Thank you for caring about your content. 야동

    ReplyDelete
  123. I want to say thanks for beautiful blog sharing with us. Your blog really great resource to update my knowledge 한국야동닷컴

    ReplyDelete
  124. you have done a great job. I will definitely dig it and personally recommend to my friends. I am confident they will be benefited from this site 일본야동닷컴

    ReplyDelete
  125. Wow! After all I got a web site from where I can actually get valuable information regarding my study and knowledge. 중국야동넷

    ReplyDelete
  126. Hi to every body, it's my first 토토사이트 a quick visit of this webpage; this weblog consists of awesome and really fine stuff for visitors.

    ReplyDelete
  127. Looking at this article, I miss the time when I didn't wear a mask. 온라인바둑이 Hopefully this corona will end soon. My blog is a blog that mainly posts pictures of daily life before Corona and landscapes at that time. If you want to remember that time again, please visit us.

    ReplyDelete
  128. I want you to thank for your time of this wonderful read!!! I definately enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog!
    온라인카지노

    ReplyDelete
  129. This is a fantastic website , thanks for sharing.
    온라인카지노

    ReplyDelete
  130. Wow, happy to see this awesome post. I hope this think help any newbie for their awesome work. By the way thanks for share this awesomeness from
    온라인카지노

    ReplyDelete
  131. Thanks , I’ve just been looking for info about this subject for a long time and yours is the best I have found out till now. But, what in regards to the bottom line? Are you certain in regards to the source? 메이저토토사이트

    ReplyDelete
  132. I always think about what is. It seems to be a perfect article that seems to blow away such worries. 안전메이저놀이터 seems to be the best way to show something. When you have time, please write an article about what means!!

    ReplyDelete
  133. I’ve a project that I am just now working on, and I have been on the look out for such information.
    텍사스홀덤사이트

    ReplyDelete
  134. This comment has been removed by the author.

    ReplyDelete
  135. Nice article I agree with this.Your blog really nice. Its sound really good
    Support my website: 파칭코사이트인포

    ReplyDelete
  136. 슬롯머신777사이트
    Hard to ignore such an amazing article like this. You really amazed me with your writing talent. Thank for you shared again.

    ReplyDelete
  137. Fantastic work! This really can be the kind of data which needs to really be shared round the internet. Shame on Google for perhaps not placement this specific informative article much higher!

    Click here: 블랙잭사이트

    ReplyDelete
  138. First of all, I would like to thank you for writing this article. I'm trying to make an article by citing your article.바카라사이트

    ReplyDelete
  139. I certainly appreciate this site. Thank you so much for this article, it saved me time! 야한동영상

    ReplyDelete
  140. This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog. 야동

    ReplyDelete
  141. Your article was very impressive to me. It was unexpected information,but after reading it like this 먹튀검증, I found it very interesting.

    ReplyDelete
  142. When did you start writing articles related to ? To write a post by reinterpreting the 메이저안전놀이터 I used to know is amazing. I want to talk more closely about , can you give me a message?

    ReplyDelete
  143. We all need to see this kind of information, and we really hope that this article will spread widely.메이저사이트 May the good things always be full.

    ReplyDelete
  144. It's been a while since I've read this heart-throbbing post.토토사이트 I look forward to your kind cooperation.

    ReplyDelete
  145. I’m very pleased to discover this site. I want to to thank you for ones time for this particularly wonderful read!! I definitely savored every part of it and i also have you saved as a favorite to see new information on your blog. 메이저토토사이트

    ReplyDelete
  146. First of all, thank you for your post. Your posts are neatly organized with the information I want, so there are plenty of resources to reference. I bookmark this site and will find your posts frequently in the future. Thanks again ^^ 토토사이트

    ReplyDelete
  147. Hello, i think that i saw you visited my site this i came to “return the favor”.I am trying to find things to
    enhance my web site!I suppose its ok to use a few of your ideas!!

    포커게임

    ReplyDelete
  148. Everyone an extremely breathtaking chance to read from this blog.
    It is always so lovely and jam-packed with a great time.
    슬롯머신

    ReplyDelete
  149. I've been looking for photos and articles on this topic over the past few days due to a school assignment, and I'm really happy to find a post with the material I was looking for! I bookmark and will come often! Thanks :D 먹튀신고

    ReplyDelete
  150. First of all, thank you for your post. Your posts are neatly organized with the information I want, so there are plenty of resources to reference. I bookmark this site and will find your posts frequently in the future. Thanks again ^^ 먹튀커뮤니티

    ReplyDelete
  151. From some point on, I am preparing to build my site while browsing various sites. It is now somewhat completed. If you are interested, please come to play with 토토사이트 !

    ReplyDelete
  152. Many thanks for the article, I have a lot of spray lining knowledge but always learn something new. Keep up the good work and thank you again. 먹튀사이트

    ReplyDelete
  153. Hi there to every one, the contents existing at this web site are truly amazing for people knowledge, well, keep up the good work fellows.
    고스톱

    ReplyDelete
  154. Excellent blog you’ve got here.. It’s difficult to find premium quality writing like yours these days.
    토토사이트웹
    I seriously appreciate people just like you! Be cautious!!

    ReplyDelete
  155. For the reason that the admin of this website is working, no doubt very shortly it will be well-known, due to its quality contents.
    성인웹툰

    ReplyDelete
  156. To an extraordinary degree beautiful and enthralling post. I was chasing down this sort of data and recognized inspecting this one. Continue posting. Grateful for sharing.
    안전놀이터 모음

    ReplyDelete
  157. Kingdomtoto adalah situs togel online yang terbaik dan bonafit yang merupakan anak cabang dari Kingdom Group. Permainan Togel Online ini sangat booming di Indonesia sehingga Kingdomtoto juga ikut hadir untuk menaungi setiap member togel online. Selain itu Kingdomtoto juga berperan sebagai Agen toto terbesar yang ada di Indonesia, agar mengurangi oknum oknum lain yang ingin menipu anda. kingdomtoto

    ReplyDelete
  158. I've been searching for hours on this topic and finally found your post. , I have read your post and I am very impressed. We prefer your opinion and will visit this site frequently to refer to your opinion. When would you like to visit my site? 먹튀검증커뮤니티

    ReplyDelete
  159. Glad to chat your blog, I seem to be forward to more reliable articles and I think we all wish to thank so many good articles, blog to share with us 한국야동

    ReplyDelete
  160. This blog is definitely rather handy since I’m at the moment creating an internet floral website ? although I am only starting out therefore it’s really fairly small, nothing like this site. 야설

    ReplyDelete

  161. I am always searching online for articles that can help me. There is obviously a lot to know about this. I think you made some good points in Features also. Keep working, great job ! 국산야동

    ReplyDelete
  162. Hi! This is my first visit to your blog! We are a team of volunteers and new initiatives in the same niche. Blog gave us useful information to work. You have done an amazing job! 야동

    ReplyDelete

  163. wow, great, I was wondering how to cure acne naturally. and found your site by google, learned a lot, now i’m a bit clear. I’ve bookmark your site and also add rss. keep us updated. 국산야동

    ReplyDelete
  164. Looking at this article, I miss the time when I didn't wear a mask. 온라인바둑이 Hopefully this corona will end soon. My blog is a blog that mainly posts pictures of daily life before Corona and landscapes at that time. If you want to remember that time again, please visit us.

    ReplyDelete
  165. Many thanks for the article, I have a lot of spray lining knowledge but always learn something new. Keep up the good work and thank you again. 먹튀사이트

    ReplyDelete
  166. We stumbled over here by a different website and thought I might check things out. I like what I see so now i am following you. Look forward to finding out about your web page again. 안전놀이터모음

    ReplyDelete
  167. There are several different ways in which people can make money online these days. 토토사이트

    ReplyDelete
  168. Your blog was incredible, I'm glad that i found. I love to read such an excellent article. Thanks! It has made my 토토사이트

    ReplyDelete
  169. Thanks so much for sharing all of the awesome info! I am looking forward to checking out more 토토사이트

    ReplyDelete
  170. I’m thinking some of my readers might find a bit of this interesting. Do you mind if I post a clip from this and link back? Thanks 사설토토

    ReplyDelete
  171. Your article reflects the issues people care about. The article provides timely information that reflects multi-dimensional views from multiple perspectives. 파워볼 하는법

    ReplyDelete
  172. Having read this I believed it was extremely informative. I appreciate you finding the time and energy to put this content together. 온라인경마

    ReplyDelete
  173. This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 릴게임

    ReplyDelete
  174. Wonderful website. Plenty of helpful information here. I?¦m sending it to a few buddies ans also sharing in delicious. 토토사이트

    ReplyDelete
  175. I finally found what I was looking for! I'm so happy. 사설토토사이트 Your article is what I've been looking for for a long time. I'm happy to find you like this. Could you visit my website if you have time? I'm sure you'll find a post of interest that you'll find interesting.

    ReplyDelete
  176. As soon as I noticed this internet site I went on reddit to share some of the love with them. 먹튀

    ReplyDelete
  177. Plz answer back as I’m looking to construct Wow, great blog article 토토사이트

    ReplyDelete
  178. but I believe it will help a lot in my country 토토사이트 Thank you. I'll be back every time

    ReplyDelete
  179. 토토사이트 We are linking to this great post on our website That's a really good piece of data. Amazing

    ReplyDelete
  180. Outstanding arguments. Keep up the great spirit.바카라사이트

    ReplyDelete
  181. Finally I got a website from where I be capable
    of truly take helpful facts regarding my study and knowledge.카지노사이트

    ReplyDelete
  182. Wow, this paragraph is good, my 메이저토토사이트 is analyzing these things, so I am going to inform her.

    ReplyDelete
  183. Your article is very informative and helpful to me. Thank you for the post it’s really nice.this is more good! do visit my site here.
    카지노사이트

    ReplyDelete
  184. Hello there! Nice article!!! But anyways here’s one of the trusted online baccarat site we can offer you so many promo and event everyday!! Good luck!!!
    카지노사이트

    ReplyDelete
  185. Nice post. I learn something new and challenging on blogs I stumbleupon on a daily basis.
    It’s always interesting to read articles from other authors and practice
    something from their web sites.
    카지노사이트

    ReplyDelete
  186. Wonderful article! That is the kind of information that are
    meant to be shared around the net. Disgrace on the seek engines for not positioning this publish upper!
    Come on over and talk over with my site . Thank you =)
    토토

    ReplyDelete