I call this meeting in order pursuant to pursuant to chapter 20 of the acts of 2021. This meeting will be conducted via remote means. Members of the public who wish to access the meeting may do so via the Amherst Town Government website. That's amherstma.gov. No in-person attendance of members of the public will be permitted but every effort will be made to ensure that the public can adequately access to proceedings in real time via technological means in the event that we are unable to do so for reasons of economic hardship and despite best efforts. We will post on the Amherst Town Government website once again www.amherstma.gov and also as I understand it on the Amherst Town Council Amherst Government YouTube channel an audio or video recording transcript or other comprehensive recording of proceedings as soon as possible after the meeting and with that I call to order the the January 12th meeting 2022 meeting of the Amherst Board of Assessors. Excellent and we are not recor excuse me we are recording the meeting and so if anyone else is doing so at this time please notify us now. Okay hearing none we can move along with the agenda. Let me let me see if I can look at the agenda here.  Yes. Let's see. Do we have any public participation? It does not appear to me. So let's go to the meetings from we have two sets of minutes from prior meetings to address the first is November 10th 2021. I looked at it this morning and I think whatever corrections I wanted to make oh my goodness what I'm I'm sorry trying to share my screen I thought it would pop up. What was that? I thought those were my family pictures there for me. You're not that young. Okay now I've lost now I've lost my agenda but okay um sorry about that but you're bringing up the minutes okay there we go. These are the minutes yep I've got the agenda up as well so um if we can always pop back to that. Any um any further concerns about the November 10th 2021 minutes? No move will you prove? No. Second all those in favor please say aye. Aye. That's unanimous. Now we need the December meeting minutes. Yes. And addressing these I'd like to look at the second page please. I'd like to draw your attention to the fourth board board concerned that sentence didn't make instant sense to me so I'm wondering what is intended there. Board concerned is residents I think it's supposed to say concern. Board's concern is residents that are older and have been here for a long time um and this was in in uh maybe what we should do is put discuss residential exemption down onto the second page and then all of this was in connection with that. Okay I would suggest maybe you make it one concern of the board was that residents not resident residents. Residents. The plural of resident. Yeah. Not CE but TS. And and Teresa do you have these printed so that I I didn't put them this time so okay so you can make these notes. Okay just wanted to make sure we make these these corrections for you. Okay are we all so could you state that again Ken please? I just make that sense to read one of the concerns of the board is our residents that are older and have been here a long time. Okay okay all right. We are always concerned about the verb agreement there whether it's R or is but um I don't know you correct me. Yeah and then you have a typo under suggested the following. Ask communities to have residential exemption in place when was it voted in on not in voted on it? Okay. Eagle eye Ken. Asking communities that have residential exemption in place when was it voted on is that is that we want to say? Yeah instead of I am it should be I.T. I.T. Where are we talking about I'm sorry. Right at the top under suggested the following. Yeah it's the first bullet. Okay ask communities it and what's what's wrong in there I'm sorry I've got it I got the was it voted on that's it that's it that's the only change. Okay and then the other question I had was did we take any kind of vote or anything about calls down there or did we just discuss it? I believe we just discussed that was an executive session so I think yes we did do a vote on that one in executive session. Okay is it is that and I'm sorry and now I can't see the pay a whole page is that indicated at the bottom? Yes it just says discuss it says discuss chapter land for WD calls and Richard to be stopping in to sign certificates and that was just the approval of their continuation of chapter 61 through the forest management plans that were prepared for us. So can I think it's raising a concern that the minutes don't indicate our vote? I thought it was an executive session well I'm a little yes so yes so this was so we were going to go into executive session we went in at 1213 and these were the things that we talked about so I think that's probably why it wasn't listed but if you would like it to be we can certainly adjust that. A broader question we've never put executive session minutes in these minutes. Correct I think this was maybe what needed to be done was the executive session entered at 1213 needed to be after the discussion because I think what was intended here was for the what we were talking about in executive session was that as well as personal exemptions. So these are not minutes of the executive session? Well we have a vote there too. Yeah we have a vote for the the exemptions. We've always had executive session minutes somewhere else I don't know where they are. I think what we need to do is just move executive session beneath these two items and remove the vote there because that is correct it should have been done in the executive session minutes not these. So we do have separate minutes for executive session? Yes okay so then the other question I have is when do we do personal exemptions in executive session and when do we do them on this open? We never do them in open we always do personal exemptions in executive session. So are you going to delete this approved personal exemption? We can say that we approve personal exemptions just so that people know what we talked about okay but I don't know that it's necessary to put the rest of it. Yeah I think we need to be consistent whatever yeah in the executive minutes or an executive session I don't think we want them here if we're going to be consistent. Right right I think I mean we have to we have to let the public know what we're talking about in executive session in case it does involve them and they want to attend but we don't have to give the detailed information about that. So what so let me ask what needs to be changed about these minutes before we can approve them? So these would just need to be the removal of the vote as well as I personally would like to see the names removed the bullet points. Okay so because because we're just approving exemptions personal exemptions in executive session and then the Discuss Chapter Land for W.D. Coles is okay because that was something that we were talking about we were also asking that Richard come in to sign those particular things so that's okay for the public to know that. So let me ask you this what what what is the public entitled to know who gets public the personal exemptions? Yes. So they can request if so so interested they can request a list of properties and the amount of money that was received in exemptions. And who well they they could find out who the properties are. Yeah depending on the list that's given it may say the owner's name it may say the address. Okay so I'm trying to figure out we shouldn't list the names ever because they're supposed to request those right and we don't we still don't give out the names we just give out the property. Okay so we're talking about these in open session now. But we're very vaguely talking about them though whereas specifics are you know people's financials for the 41 applications the 17 applications those things cannot be discussed in public session. Okay so I run it just keep all the names off the stuff. I agree I would like to see it that way but that's that's your decision as the board. Okay so you're saying in the public minutes that the names wouldn't be there but in the executive session minutes that's where the details would be. That's correct. Correct. So in terms of how we fix this minutes. So in terms of these minutes the first thing we would do is take where it says executive session entered at 12 13 p.m. and move that beneath right above where it says meeting adjourned. Okay and we would we can leave the the chapterland alone or we can say discuss chapterland and Richard to stop into science certificates either way is okay up to you guys and then under the approved personal exemptions we'd leave it at that. And take the names off. Yes and the vote. Okay and what about the vote that we took on on Coles. And that again would go into the executive session. All right so so I'm sorry our approval of chapterland for Coles is is an executive session matter. Yes. Including including the result of the vote. Yes. No the other thing too is if someone is to want a copy of the executive session minutes they are able to get those assuming that all matters in executive session have been completed and that there is no financial information on that paperwork. So we can redact if we had put that information and if we had left it for example where it says the approved personal exemptions for these people with our vote that's okay to give out as well. If that's requested we don't have to if no one has requested it but if someone requests that we can give that information. Okay so related would be I don't remember us ever approving executive session minutes. And we don't have to no. In fact I don't remember ever seeing executive session minutes. I agree. I think generally the executive session minutes are not approved only because of the fact that they're executive and we don't do it in the public section. But completely up to you guys if you would like to approve them in executive session we can certainly make an agenda item to do that. Yeah I guess I'm fine with trusting you that the minutes reflected. I mean my only concern would be remembering what we did in executive session. For example if we could see them for example we would know that the vote was taken on Nicole's situation. So I'm saying yeah yeah. I think we can figure out a way to do that. Okay. Well we could come by your office and just look through them. I mean you could do that as well. We can always send a totally separate well I don't know that we would want to send depending on the if there's financial information in it. But I can always share a screen that shows it during our executive session. Yeah I'd like that. So I'm I don't have a problem with the personal exemptions being kept off our minutes. I'm just a little unclear about why the chapter land decisions. I mean it seems to me a voter or a taxpayer or a resident should be can come in and and simply get the information as to as to what owners have been granted chapter land status right. Yeah yep. That's a public thing right. Yep I mean this was only just the way that it was done I think in the past and that's why I kept it that way but I'm more than happy to move that into public section in the future. I'm fine with that too. Let's just vote let's not go on an executive session then in the future. To talk about chapter. Yeah that's fine with me. I don't think it's an executive session matter but that's just a general sentence. I think the the only way that it would be at that point is if we end up talking financials for someone and then that of course would be executive session but I think it's okay to put it into public. So let's leave. Okay go ahead I mean the chair is confused as to what we need to do now. Okay so so what we'll do is we'll motion and second to approve the December 8th 2021 meeting minutes with friendly amendments and those amendments will be to move the line that states executive session entered in at 12 13 p.m. to just above the sentence that reads adjourned meeting at 12 35 p.m. we will remove the wording for W.D. Coles and Richard to be for W.D. Coles and we will remove the vote and the taxpayers names on the approved personal exemptions. Does that make sense? I can also do this we can remove that that that and that and then we will move this here. You're good. Okay so can I move to subject to those changes approve the minutes of of the December meeting? Second. All those in favor please say aye. Aye. Okay. Okay all right so we can move on with all the minutes being approved to the abatements so we have the excise tax abatements for weeks of December 2nd through December 17th in the amount of 403 dollars and 93 cents. Move to approve those abatements. Second. All those in favor please say aye. Aye. Okay then we have the following week December 20th through December 28th with another excise abatements in the amount of 291 dollars and 99 cents. Okay move to approve those abatements. Second. All those in favor please say aye. Aye. I don't hear the vote. I didn't hear the vote there. Did everybody vote yes on that? Yes. Thank you. Okay. Okay so next we have the report for all the exemptions that were approved. I'm just going to quickly scroll through this since you all have a copy of it. So we just need your vote to approve. Well I guess we don't really need to vote do we Teresa because these are abatements they've already approved. Have we approved all these? You have. Some of these like blind I've never approved a blind one. These are all the exemptions we have every year that reoccurring ones. These are the statutory the personal exemptions. So let me just say you know Kim we're perfectly we're perfectly willing to be reformed. Oh yeah. But we I don't know that we've ever seen this summary before and I think it's great that we can see it now. Richard you probably saw the last I think before I was putting on there the signature page first and I usually would put the the list afterwards and I was requested to put the signature page on the back. Okay I looked at I looked at this earlier today and I saw names I haven't seen before and I guess is this in its current form subject to our approval or are we simply just looking at it for interest sake? Well these are all the abatements that were approved on the back in November or December. I think it was a meeting. I mean I need to be clarified on which ones do we actually look at on which ones are automatic. Yeah we've never approved anybody for a blind exemption. Okay so the way Emerson does it is slightly different than the way I was taught to do it at assessor's school. In assessor's school everyone applies for those particular the personal exemptions every year and the board needs to review those applications every year. I don't think that Emerson does it that way so if you guys would like to change that to the way that I know that's okay but it's up to you. I heard the term statutory exemption. Same thing as personal exemption the state calls them I think statutory or at least that's that's how I recognized them. Maybe an old term that's used in assessing classes but personal exemptions is the same. So what you're saying Emerson does it if it's been approved once and they renew it year after year we don't have to approve it again. Correct the the assessor's office of Theresa and myself Steven will look through them and make sure that the requirements are still met. Okay but it appears that you don't see them again once they've been approved the first time. Unless there's a change in there. I'm fine with that. So do we see them the first time they apply? Correct and then thereafter if there's any sort of change of for example someone going from a thousand dollar exemption to a 175 or vice versa. I'm fine with that. Yeah if they miss a year then we'll see them again. Yeah you'd see them again right and they'd start over at the beginning. Okay so is there a signature on this document that has to be approved? Yes. No I don't think we want to sign it here we signed on the applications as they come in. Yeah you yeah I mean it. We have to sign again then. There's a signature line right there. You know what I think that this was brought up in the previous where and I probably ended up scanning these just as a automatic thing so I think I was told previously that I really don't need to but as long as you've approved the exemptions you really didn't need to see the reports so. I don't personally think that this needs to be signed because you've approved the other abate the actual abatement application but again this was something that was different for me so. Some of those abatements happened long before us we're on the board if they're being renewed every year so. Oh yeah. That right there is the grand total of all personal personal abatements that we do veterans blind veteran spouse that right there is the number 100 1500. Right for the ones for the ones that were processed and that we had received at that point yes. At that point. Right sometimes we get some I mean these were done before the tax bills were generated so they would reflect on the tax bill so we do we have up until April 1st to to receive these applications so anybody new obviously we wouldn't or if anybody sent in there's late we would do the adjustments. Okay. Once we get that application. I got my tax bill this year and I saw I thought there was some very good information of that that accompanied that tax bill is that new that that information that we got yes yes and that's something that I have in the future on the agenda to talk about too so. Yeah. Yeah we said we wanted to address the notification of exemption process and this is one really good. Yeah. Yeah me too. And your message was good Kim. Introducing you. Thank you. It was a it was a user friendly mailing from the town I thought. Yeah and we learned about parking. Yes. Yes. So where does this report go to? Who do you send this to? Anybody? I'm sorry we're talking about this abatement this 101,500 who's this go to anybody? We ice give copies on to the collector's office and accounting department. But have they already done the adjustments or not? We do the adjustments over there here so. So we've put them into Munis as of 1216 there was 101,540 cents and then it sounds like Theresa just gives a copy of this report to them so that they they're aware of that as well. So it goes to the state? No it goes to the collector's office and the accounting office. Okay but it does actually in in April after we have our deadline of final in no longer being able to turn in the statutory or the personal exemptions we do have a recording that we set up with the state to let them know how many of each category we have and we do get refunded for X amount of dollars depending on how many abatements we have. Okay so there's some sort of a state subsidy of the. Yes. Okay well we will move along this is just another list of those that must have come in on the 20th rather than the 16th. So the next thing on. Just a brief comment on the agenda these personal abatement reports were not mentioned at all on the agenda I don't know if they need to be but. At this point no because we're not taking a vote if there was a vote yes we would certainly need to. Good. To change that. So okay so the next thing on the list is the commitment to for the actual tax billing. So we have this page here as the warrant to the collector states that we are expecting to collect 56,867,171 dollars and nine cents in real estate tax alone. Second is there no page two accounting. That comes that later then that's all done on one sheet so you'll see that later on. Okay okay so the same information is going to be submitted to the accounting office that you will see further down in the attachments but what was the question. Is that the whole levy. It could it could be it depends on how the town would like to use that you're allotted a specific number to for your levy whether or not you actually collect up to that penny or less than that depends on the needs of the community as well as you know a number of other factors I believe this is less than the amount that we're actually able to collect for this year. And that number and that number agrees with the la five. That's correct. So this is this is absolute this is under the two and a half percent increase plus the new growth generally speaking you're allowed to well you're allowed to go up to two and a half percent on your real estate taxes each year generally speaking I think many communities choose to not use that full two and a half percent especially if there's not a requirement to spend that amount of money there you know there's not not a need for all of that. And then special requirements if we have to go override. That's correct that's correct and if this is something that you're more interested in and you want some more information we can certainly schedule Sean to come in at our next meeting and sort of talk through this with us you know I don't I don't want to speak too in depth because this is more of the accounting side of things okay to figure out that that you know exactly how much we we need to collect so you know I don't want to get too in depth with it and give you false information all right but it requires our signature correct? The LA5 yes the LA5 requires your signature that's correct okay and is there a separate is there a separate one of these for the CPA surcharge? Yes yep we will get to that as we continue I just figured we would do one at a time since it's something different. Yes so if you are comfortable to vote on the actual tax we can do that now or we can go through each one and vote on them separately once we get to the end. I think we can do this one I moved to approve this warrant for the amount shown there. Second all those in favor please say aye. Okay so moving along to the next one it happens to be the CPA so here is the warrant to the collector in the amount of one million three hundred fourteen thousand three hundred seventy eight and fifty eighty five cents so this is what we expect to collect with the CPA tax for the fiscal year 2022. Okay I sometimes it gets referred to as a surcharge I think yes I moved to approve this amount on the warrant for the CPA tax. Second all those in favor please say aye. Okay moving along next we will see the water and sewer commitment for leans and interest and this is the warrant to the collector so I had split that out I think on my notes but total amount to be collected is 287,998 and 48 cents and that's both water and sewer including the interest. So I'm it's amazing how I can be in like my sixth year of doing this and I still don't understand stuff but let me show you the next um how does this get how does this amount get collected? So these get leans to the real estate tax bill so the CPA charge gets applied to the real estate tax bill as well as the water and sewer and the interest for both of those so if you see this report that I have up on the screen right now this is a great straight out of munis which is the billing system yeah and it shows you the total for each of those which is where we're getting our numbers from on the commitments. So then it shows you that for the specifically the sewer and water interest in leans there aren't any for the first and second quarters because we put them on the third and fourth quarters so you'll see those reflected in those two statements there. Going down just another page just to make things slightly easier and a broken down figure this is the commitment or the um the yes the commitment to the accounting office and you will see the actual breakdown so you see the 56 million in real estate the two million in personal property then you'll see the breakdown of the sewer assessment here so this number here is the amount of sewer bills that was not collected on time so it was leans to the real estate tax bill to make that collection and then this 12 this has an extra number here this three needs to be removed so we will do that as well but so it's 12,274 and 72 cents is the interest on that 128,000 that was not collected okay and then going go ahead so I'm just going to ask um and since I'm the only one asking questions I have a sense my my two brothers are fully on top of this but I take it that these are these these are assessments that are that go on someone's personal property real estate bill when they they haven't paid their water sewer on time is that right that's correct I think there's a certain amount of there's a certain amount of years back that they go I believe the collector the collector makes that determination as to what years get leaned to the tax bills um anything over 90 days gets leaned to the property once the actuals come okay so if it's late past that um that's when they do that so some people see this on their bill and others do not is that right that's correct um if you have not paid your water and sewer bills then you would see this if it's past 90 days do if you have paid those bills on time then you will not see these extra charges so this is just the information um sorry this is dollar amount that has not yet been collected okay um and then you'll see the exact same thing down here for the water interest and assessment so the water balance is 134,427.60 that has not been paid and then that 13,000 is the interest on that number um and then again you'll see the CPA tax as well so those are all the things that we're asking you to vote on we are committing to the collector and the accountant for uh because it was leaned to the real estate tax bills yeah I was wondering why we would see the water and sewer and uh at all but and the and the reason being is because it was leaned to the tax bill yes got it now okay yeah yeah any idea what the interest is for the they charge on the past two payments the um I don't know what the percentage is on the water and sewer Trisa do you happen to know what the percentage is actually don't that's all right so these are not amount they're calculated in the assessor's office they're passed along from um accounting departments accounting yeah okay from the collector yet when when we do the input of the tax bills there's a place where the collector takes over and applies these to the tax bills okay yes so we we have a signature line to approve on this so we have um we we need to do each one separately so we have personal property commit we already did the real estate um so we have personal property in the amount of um two million three hundred thirty eight dollars um two million three hundred thirty eight eight sixty six and thirty three cents that needs approval and again that's for personal property do you want to move that up on the screen yeah Kim sorry about that is that that's down here yeah okay uh move to approve that uh that warrant for personal property tax second all those in favor please say aye aye okay then I will move back up here to just show you these amounts so we have the sewer which is here so we're going to vote on that so um the actual sewer bills is one hundred and twenty eight thousand two hundred eighty nine dollars and fifty four cents with the interest in the amount of twelve thousand two hundred seventy four dollars and seventy two cents you've got a number out of place there yes so we will correct that as well the three is going out yes okay yeah so again it should be twelve thousand two hundred seventy four dollars and seventy two cents okay do we have to approve those numbers too yes okay all right I vote to to approve the warrant for the sewer assessment plus interest second all those in favor please say aye aye okay and then the last one is the one circled on the bottom which is just the water and the water interest um so again water is a hundred and thirty four thousand four hundred and twenty seven and sixty cents and then the interest on that is thirteen thousand six dollars and sixty two cents move to approve the the warrant for those second for water all those in favor please say aye aye okay perfect all right so uh moving on we had had a discussion in the past about um oh this is just the report out of me and us to show you where we got our numbers from okay um so we had had a discussion last meeting about uh chapter properties and there was interest in finding out how many properties were actually listed in uh were enrolled in chapter programs so we printed out the la for um from this year for you to show you um the the particular chapter categories and how many parcels are listed so under chapter 61 a which is the first one or excuse me under chapter 61 which is the first one highlighted you will see a category that says two and then a line that says 34 so excuse me 34 means that there are 34 parcels that are strictly chapter 61 and there are two other parcels that have other uses as well as chapter 61 so it could be someone's residence um and then their backyard is being um is under a forest management plan something to that nature um next line down you will see chapter 61 a same idea so there is 74 properties in the town of amherst that are strictly chapter 61 farming of some sort and there are six of them that are listed as mixed use so meaning um again could be someone's residence and there's also a farm on the property as well and then the the last category is chapter 61 b recreational um so there are 18 parcels that are strictly recreational land being left at its natural state allowing others to use the property for um trail access hiking things to that nature and there is one that is someone's residence as well as or or I think it's probably someone's residence as well as that and the 61 bs are those generally trails uh people would have provided sort of a right of way across their property um it can be trails it can be um you know if you have basically if you're leaving your land at its natural state and you're not touching it you're allowing other people to use it there's generally speaking there's a trail on it um maybe that the back of your house is or the back of your yard is the side of a mountain and you allow people to create their own trails and travel up the mountain um you know it can be something to that nature um it can be that you have a pond in your backyard and you allow people to go back there and you know use the space to hang out to fish to to hike to you know whatever um so as long as it's being left at its natural state and you're allowing others to use it you can be enrolled and you have enough acreage that is you can be enrolled in 61 b and the amounts to the right of those three lines what do those represent the amounts to the right is the value of the each of those those are all given to us by the state the values these these all come out of our system our vision um and then we provide them to the state and the state does their research to approve or tell us that we need to make any adjustments on these oh i thought the states are told us that's going to be the value so the state does give us um guidelines as to how to value these these particular properties um you know when we put a code on a property so you see on the chapter 61 there's a 600 in parentheses that's the land use code so if you're to look at a property and you see that it says 600 you can know that that means that property is is has a forest management plan um so under that condition yes the state does give specific guidelines and requirements as to how to set up those values and that's generally done through the kama system so in our case vision so Ken this was your inquiry so do you have any questions about this or well i guess along that same line then so you think 61 a you get more strong state input on the value with other two you're more free to do what you want to do um no not necessarily i mean we have so with with chapter 61 a which is in the middle the 700s so that is the farming that's like you know hay fields vegetables so on and so forth um and so every year we have a chart that's given to us by the state calculated out to our specific area so you'll see something like um west side of the of the river is this dollar amount per square foot on this type of property you know north side of the river is this so so they come out they do their research and figure out you know which side of the river is is you know more valuable land than the other side um and so then they give that to us and you know it's our choice whether or not we want to update that i think personally it's it's a good idea to follow along with every year with what they're suggesting just to keep keep with market values so it normally goes up if it doesn't go down ever it does yep it does um if there's ever a situation where um for example a flood has happened and it's happened over and over and over and over again in the same year and it's really affected the land and they don't anticipate that the the land is going to dry out in any time soon that would certainly affect um you know the land on whatever side of the river that they're talking about um maybe it affects both sides in that case um you know maybe there's some sort of issue with um you know corn for some for example and um right here in massachusetts in western mass maybe that's our specialty maybe that's the thing we grow um and we ship that throughout you know the united states if there's an issue with that it may affect the value of these lands depending on how the state looks at it so it's really you know i can't say exactly what they're looking at because i don't know um but those are like sort of the gist of what they look at in recreation do they give you a guideline on that to them that's usually about 25 percent 75 percent i believe of the of the but yes guidelines come from from the state yes okay and you mentioned minimum sizes do these all different chapters have different minimum sizes that's correct so um chapter 61 b is a minimum of five acres and then uh 61 a and 61 is a minimum of 10 okay so um i just had a question this morning about someone removing land from from a chapter um and basically the answer is if you want to keep farming you can remove as much as you want as long as you have that minimum requirement um to be in chapter and then of course there's other other um things that go along with that the rollback tax the liens that are applied um with this so there's you know much more to that but so this is very interesting chart me what is 12 to 43 categories what are at the very bottom on the chart um so that's our mixed use properties so the mixed use codes um are so they they separate out the ones the mixed use properties that are specifically involved with chapter programs and then they put everything else together so mixed use is anything that is um for example residents and a storefront uh maybe it's a um a commercial building and an industrial building um you know it's a number of things but those basically what it's picking up there is any type of mixed use property so the zero in front of the 12 represents that it's mixed use in that looking i'm sorry where are we looking i'm trying to follow the second right second the last slide right above the 900s figure yep so so the zero represents the fact that it's a mixed use in the case of the zero one let's let's say the case of the zero four three um because we the reason that i'm skipping over is because we don't have um any 200 properties which is open space so zero four three would mean okay it's mixed use the four represents that it's industrial property and the three represents that it's a commercial property um so in the case of chapter 61 you would see a zero seven one meaning zero it's a mixed use seven meaning it's a chapter land property and the majority of the property is being farmed and then the one represents the residential part being second in the third in the list of numbers means that it's the smallest amount of the land that's being used for the residents so there's there's these are quite complicated if you really think about yes you just said the chapters have their own unique mixed use yes so they it's set up exactly the same way it starts with a zero all mixed use properties the very first number after the zero is the main use of the property and then going further away it'll be the lesser and lesser use of the property okay but the state for some reason separates chapter mixed use property versus um you know commercial industrial or residents commercial residents industrial um not sure exactly what the reason is but that's what they do and the last question i had on this chart is does the exact exempt property that 900 line is that number ever used for anything i mean is it really up to date or is it just sort of once in a while no it's up to date so um any property that is exempt with the state with with the exception of state owned properties needs to file a three abc every year which basically explains to their community why they are exempt and that they were approved by the state of massachusetts so there's certain paperwork that they need to accompany that application with um but that that number is updated yearly so if someone doesn't file their three abc this year and we reach out to them to say hey we didn't get your application and they never respond or they say to us you know what we've moved out of amherst we don't own that building anymore um that number would reflect that and then also if someone moves into amherst and has the the um files the three abc and they're new to our town then that would also change but part of that form they list what it's worth nope they list um they basically in that form they're just proving to us that the state has uh approved their exempt status we still value those exactly the same way that we would value any other property um so you still have to do all the work and we're not collecting any taxes yes okay yes i mean that's got to be a ton of work with you math amherst and yes wow yes and they're strange buildings too to value yes okay thank you very much for sharing this kim no problem um so the next thing on the agenda is the principal assessor update um at the moment i don't have a whole lot to update you on um and basically um so what i want to tell you is obviously as you know the tax bills have gone out we sent out that um um letter in the tax bills so um that went through a whole process of approval um with the town manager and the other departments as well um we've gotten really good feedback on that um so that's been really nice to hear that people are um actually reading it because there's always fear when you send something out in the tax bills that just gets dumped in the recycling bin so it was really nice to hear that that people are actually reading that um so that's what's going on we are preparing our system for the new fiscal year so we're getting ready to work on lot splits and any significant changes that needs to happen um waiting on the building department to get us a list of any occupancy permits that were given so we can process some supplemental bills if needed um looking at some over valuations we haven't gotten a ton yet which is good we're still early though um so just kind of prepping up for those things and um we do have a pretty busy year ahead of us because we've got the um the reval happening and our cyclicals are due for the state as well um so just really what do you mean by cyclicals so cyclical inspections are um something the state requires and what it is is every single property has its own unique schedule so when you enter someone's residence building whatever it is that you're going into you start a 10-year frame so the state requires that we attempt to inspect every single parcel building in the in the town that you are in every 10 years um at least you can do it more than that if if so needed um and so every um every 10 years we have to provide them proof with records that we have actually done a portion of our community um generally speaking assessors will try to wait until the last couple of years to do those inspections um because it's the most accurate data um and so when the state comes in to look at those they they see that that's that's what's happened and they're okay with that uh so that is due for us this year so this is our 10th year of the state cycle and so we're trying to um meet all those requirements for those properties that are at their 10-year mark or over the thing that stinks about this is everybody has the right to tell us that we can't come in so there are some properties that um you know what the best that we can do is send notification and ask to enter um and if they say no then we have to find other ways to um to look at their valuation and then try not to over text them and try not to under text them so um that's that's one kind of yucky part about this this happens every year though right yeah oh yeah we do every year but but every 10 years the state comes in to to verify that we're actually doing what we're supposed to be oh okay so the state doesn't bother you except for every 10 years that's correct state checks okay yep yep and if we don't have all that stuff done of course then they you know um they come in and either take over and do it for us depending on how bad in you know what what shape we're in and how long things have been put out put aside um and then they charge us for that at at whatever cost regardless of if we have that in our budget so we want to keep on top of that it also just helps us to keep our values accurate so we want to do that anyway um are you in shape or do you need to hire some help um so we'll need to hire some help but that's a normal thing um but but I think by the sounds of it we're in pretty good shape yeah so um so that's really what I've got for the update for the moment those are the most important things I think um there's you know I mean of course you know there's daily operations that we're continuing to do um Teresa has mailed out and and Stephen all of the income and expense three ABCs for personal property form of lists um so so we're getting a lot of those back as well um as any of you may heard we did send out a postcard reminder for the income and expense forms um and we put them on our website so if anybody's looking to get those they are available there and of course if you know if somebody needs them mailed we can we can do that or email um so we've gotten quite a few calls about you know what the heck is this I've never seen this before um but it just saved us money it saved us time um and it seems like a lot more people are willing to actually do things on the computer nowadays so um why not take advantage of that and just save the town some money on postage on paper on time of all of us having to stuff the envelopes and you know all of that stuff so that was just a little cost-saver for us so um but I think other than those things um that's kind of what we're doing right now you send things out to the farmer every so often to verify their income from farms yes so every October there's an application for each class of 61 um with 60 with chapter 61 recreational um forest management plans they have um a requirement every 10 years to renew their their plan so they don't have to necessarily file an application with us each year um but but if you're in chapter 61 a without a forest management plan and you're in chapter 61 b it is a requirement of the state that you supply that information to your community yearly okay uh any update on the residential exemption oh yes um so I have reached out to um all those communities that we had suggested I added in I think it was Wolfham that you guys had suggested that I talk to um or Somerville and I've heard back from most of them um and I'm hearing a very negative response um so what I'd like to do actually maybe if you guys are interested is um at our next meeting I can share with you my results and what I have written down so far and we can we can put discussion on that if that's okay negative response about the viability of a residential exemption is that what you're saying yeah basically um you know it's it it what I'm hearing is it causes a ton of work for the assessor's office to the point of potentially having having to hire another staff member um it causes for one community was saying very negative things that it causes for people to lie to you and saying that they live in a place where they actually don't live causes for um just hostility between neighbors these are people these are communities that have actually instituted a residential exemption that's correct oh another thing that I'm hearing that is is concerning is that once you're in it you're stuck you can't take it away how can you take away an exemption for people who need it another really concerning factor that I have um been that has been mentioned to me is the fact that anybody that has a trust does not qualify and that's very concerning because a lot of elderly people put their property in a trust um or they have um gifted their their residents to their children with a life estate and and that affects this so if those are the people that we're trying to help this is not going to help them at all um so you know I think there's a lot more research that needs to get done and I think that um we are Sean and I have been working on uh um trying to just collect all this data and first process everything we've been reaching out to some of our own property owners um I was able to speak with someone the other day who owns a number of large apartment complexes in in town and just sort of heard his side of things um and it's eye opening to think about from his direction so I think uh we'll we'll we'll be putting together a presentation for the the council at some point um and you know sort of see where it goes from there maybe this is this is enough information and they don't want to be bothered by this anymore maybe they want to find out more maybe you know so we kind of have to wait at this point um continue the data collection and just wait to see what the council is looking for right so this is easily more complicated than the even the more you look at it the more complicated it gets absolutely yeah yeah and I mean it's it's you look at the outside and you say okay this this looks great but but you really I mean this research is great because you're finding out a lot of things also finding out that if you implement this you have to keep it for a minimum of three years unless there's huge huge detriment to your community and it's causing a huge issue then you have to bring it to Capitol Hill and you have to go through this huge process to remove it but then you also have the factor of okay you've given the elderly people or the the residents who are full-time in this community this break and now you're taking it away from them how does that feel so it's a huge um it's a huge decision to do this or not sounds like it could just have gotten simpler I mean if you look at the you look at the pluses and minuses and uh it could be very simple for council and everybody else right and so hopefully that's what this research is going to bring is a plus and minuses chart that we bring to the council and then they can see and make their decision based on that Kim is there a goal to have it the presentation ready completed um Sean and I are going to sit down possibly today I I'm not sure if that was set in stone yet um but we wanted to look at a couple of things um together and hopefully have enough information to be able to present by the end of the month and then see what council wants to do with it um well I mean I think I think part of the one of the considerations is when is the council have any sort of running room for you to to actually present something when they're not thinking about five five you know 10 other things right right yeah so yeah I'm guessing the summertime sometime right having the presentation ready now um or soon is ideal and then trying to squeeze into their schedule is is another whole thing but also keeping in mind that we want to give a significant amount of time to be able to figure out if they want to vote this in how we need to implement this how we need to get this done do we need to hire someone else do we you know someone and so forth so um if we if this isn't something that we can sort out I would say by the summertime um this might be something we want to push push back another year yeah you know you don't want to push Ben you want to get done early I mean you can squeeze it somewhere in there with a council yeah yeah I mean that you know it might be just at this moment because I know this time of year is busy for them too but if we can get in in February or March you know I think I think the earlier the better so is it your sense that becomes sort of the sort of the shorthand conventional wisdom in most communities which is especially in western Massachusetts which is we can't we can't do this or we shouldn't do this it's almost sort of a standard they have to decide about this every year right so most communities sort of have to have it baked in that they they can't do this right yeah um well I I wouldn't say that it's it's that they can't do it it's that we don't want to do it um I also was given a fantastic PowerPoint presentation by the city of Barnstable explaining this information so I'd be happy to share that with you all as well I'd like to just just explaining how how this works and and they went very specifically and did a breakdown of taxes in their own community so this you know this this that I have the PowerPoint that I have is not for Amherst it's for Barnstable so the numbers might look funny but at least you can see you know how it's working there they have it right they do have it and what I'm what I'm getting the census of is all of these communities that I've reached out to that I've gotten back to me have had this in place for over 20 or 30 years and the new assessors are you know like the guy in Barnstable said this is then here for over 30 years and we have the staff we've had the staff to be able to do it so it's not really a big deal but a community that's starting out this is a big deal because you're not only you know exempting x amount of dollars from these people and having these people pay for it but you're also having to add another staff member you're having more calls to the office you're having you know more paperwork that needs to be filled out you're having to monitor things more closely you're having the risk of people telling you that they live there and they don't you know you're so there's just all these things that you know we need to think about so there's been a some so so people have a tendency to fudge a little bit about yeah and I mean the thing is like you know of course that's going to happen in every scenario in every situation in every budget item in every you know what I mean it's going to happen but if you're trying to help the people who live here the seniors the people who just this is their residence this is where they grew up this is where they want to bring their family stuff like that is not going to help so people need to be honest and I mean you know it's it's the 21st century so um but anyway that's just feedback that I've gotten so far that's what I take of it and so what I would like to do is put this as an item on our agenda for our next meeting and I can share that presentation with you and I can share our findings. I think we do it. When's the next meeting? Um are we at the point where we have to are we done with all the topics today? I think so as long as you guys are comfortable with that. Do we have an executive session today? We do very very short but yes. I'm suggesting February 9th. That's good. Do you you want to stick with Wednesdays still? Yes, second Wednesday of the month. Okay that looks good. 11 a.m. Sure. Gentlemen is that good? Yeah that's good. All right okay so then um we can uh motion to uh enter executive session. So can I bring up something? I got an email about conflict of interest from the clerk's office. Yes. And I'm wondering whether the other um Deli and Ken got got a two. Right and only you only you. No this was something that all all employees got as well as board members and the council as well. I haven't looked at it carefully to figure out what I'm supposed to do. Can you give me sort of a short summary of what I'm supposed to do? Yes so if in the past I believe it was the past if you took the um the the if you if you listened to the seminar last year then all you need to do is sign that certificate stating that you understand um you know that there's the conflict of interest rights. Um if you did not listen to that seminar last year then you need to listen to that. It's just it's just a webinar um and then you can sign that um that form. Do you guys have a have a memory of doing this? Yes. Yeah everybody did it on their own Zoom. Right. It's an online thing. So if you don't remember it Richard. If you don't remember it I would be willing to bet that you'd need to listen to that. You don't forget it for a while. Okay so I would say if you if you can just take a few minutes to um do that webinar and then you can sign that and submit it back to the clerk and or me it doesn't matter how you do it as long as we can get it to the clerk. Does the clerk's office have some record as to whether I affirmed that I saw it last year? Yeah they will. Yes yeah you can always touch base with them and find out if this is a year that you need to do that if you want. All right because I'm having a must be having a senior moment here because I'm not remembering it. Well last year you could have signed the form without looking at it though. So no. This is true. This is true. Last year last year was a tough year so we never know. What's that look on Zoom here? Um as of right now we're looking to keep it this way until at least April and then we'll hear what the council votes on. So um before we go into executive session two I just want to mention that what we will be talking about is uh the personal exemptions. Okay. So um and we're not returning we're not going to return after executive session. That's correct. Okay so I move that we so I move that we go into executive session to address personal exemptions. Right. Second. Okay and since. Favorite. Hi. Hi. Hi. Okay since we're in there I am going to stop the recording of the meeting. Thank you very much.


I'm Frank Rowand. I work for Sony now, and I'm one of the device tree maintainers. And as a result of being a device tree maintainer, I feel the pain probably even more than most of you. And so I've been incented to create some tools to help make debugging easier. And today is another talk on that subject. This is the third in a series of talks. I was here last year, and I gave a two hour version of the talk, completely different material than today. Today is just an hour fresh material with a little bit of an update of last year. And I'll provide my my nice new tool for this year. Kind of a few housekeeping things. I always have way too many slides. And some of them are for context. The slides make sense when you go home. Some are just nice things I wish I could include in the talk, but there's just not enough time. So I just marked those with a skip in the corner. And when you read the slides at home, you see that that little skip you'll know that I didn't talk about it. And you might want to spend some more time reading those slides. Also, any questions, feel free to ask me during the talk. I'll be here after the talk. You can catch me anytime in the hallway. And I'll be here through tomorrow morning. The slides are already up on the conference website. They're also up on the Elinix wiki. And there'll be a slide at the very end pointing to those. So I give this talk, I used to have a very long explanation for this, but I think everyone really knows why. It's hard to debug device tree. And hopefully at the end of this talk, my goal is that you will have another tool in your tool belt to help solve device tree problems. Here's my outline, what we're going to talk about today. First, I'm going to update on the things I talked about last year, what's changed, what's better and updated. I'm going to talk about some concepts that you need to understand the last part of the talk. It's a little bit out of order. In theory, I should give those concepts first so you can understand the updates. But I think that's going to be explanatory enough that you'll understand it. And finally, I'm going to talk about my new feature and a tool to use that feature. So talking about last year, just a quick reference, you can look these up at home. These are the slides from last year. There were two major sections, the first hour and the second hour. The first hour, I talked about a tool called DT diff. And this tool now has the name of DTX underscore diff. And it's in the mainline kernel. It arrived in 4.6 RC1. And here's a real quick explanation instead of the hour version of what this tool is useful for. If you know device tree, you know it starts with some source files. They go through a blender. And out the other end, once you have a booted system, you have a device tree on your target system. And here's the more technical slide of what the blender looks like. And this is in last year's presentation. I'm not going to talk about this in detail. Don't try to understand it right now. The basic concepts are you start with source. It gets compotted into a binary. It flows through a boot loader. The boot loader may munch it a little bit. It gets put into the kernel's address space. The kernel then copies that into a data structure. The kernel may munch it some more. And overlays may come along and modify it further. So there are a lot of different stages in the lifecycle of the device tree where you might want to look at what does the device tree look like at this point in time? How does it change from a previous point or a later point? And that's what the DTXDiff tool is all about, is giving you the ability to look at device trees in the various formats that they can be in. It can be, like I said, the source, the compiled binary, or on the target, it lives in the sys file system. There's a nice side effect of DTXDiff that just slowed out of it for almost no work. If you've ever tried to look at a device tree source in the Linux kernel tree, you look in and you have the beginning source file, and then it includes lots of things, and those may include other things. And a definition may not stick. You may describe what a node looks like or a property, and then it includes 20 lines later, it may change that value. And so it's very tricky trying to understand what the end result will look like just by looking at the source. So if you just run one device tree through DTXDiff, it'll do all that preprocessing and out pops the final result, what it's really going to look like on your target system, assuming nobody else modifies it later. The other half of my talk last year, the second hour, included about four slides on one tool called DTXDiff to config, so a very minor part of that second hour, and I worked on that a lot more since last year. Last year was kind of a proof of concept, and now it's actually a usable tool, and I described it in an hour-long talk at LinuxCon Japan this year. So if you want to understand that tool, I'd highly recommend you look at those slides, and you'll get a much better understanding than my real quick explanation I'm going to give in the next slides. It is in mainline now, it just got into 48RC1, so it's out in the 48 kernel, and here's what it's trying to deal with. There is a manual process in the old days where you have a device tree, and it's describing devices, and then you want to generate a kernel that can actually handle those devices, you need the right driver in the kernel, and the driver needs to be able to access that device. So the manual process you went through is you looked in the device tree, and for each device there's this magic string called a compatible, and that magic string, the compatible, somehow matched up with the driver file, so you had to search for a driver file somewhere that had this magical compatible string, and then you had, once you found your driver file, you then have to look in the make file, and in the make file you'll say what is the kernel config option needed to enable this driver, and then finally you look in your kernel configuration, is my configuration option enabled or not. So it's not complicated, but it's a long process, especially if you have several hundred nodes that you need to do this for. So the solution is the new tool, dt2config, and you just pass it the device tree that you want, the kernel config file optionally, and out pops a line for each device, or multiple lines, and this is an example of just one line. Can you guys in the back actually read that? This is really cool, I've never had a screen this big to be able to have small font, so I always blow things up, and you'll have to see my LinuxCon Japan talk to understand this. I'm not going to talk about flags, but you'll see all the things I talked about in the manual process. There's the device node, in this case the coin cell, there's the compatible string which has got to magically match with the driver. This tool found which driver matches it, in this case the qcommcoincell.c, and it looked and found out what config option needed to be enabled, and it checked the kernel config and said, no it's not actually enabled, and people saw this tool and they said, but why doesn't it just fix the kernel config file? So I gave in, I didn't want to do this because it's just too easy to blindly accept the result, so I compromised, and you'll see that same line that was there before, that report line, but it's nicely commented, and there's a comment line saying, what's the current value in the kernel config, and if you want to enable this driver, what do you have to put in the config file? So in theory you could just take that blob attach it to the end of your .config, uncomment this one little configuration option, do a make old config and you're all set. The complexity is for a given node, given device, there might be multiple compatible strings, and for each of those compatible strings there might be multiple drivers that can match that, so you as a human being actually have to pick and choose, this tool can't do everything for you, so it's not just an automated configuration, it gets you most the way there and it tries to make life easy for you, but you really really do have to pay attention and think about what you're doing still, you still need to be involved. There's some other things I talked about in last year's talk, there's still proof of concept, nothing new to talk about on those, so here are the concepts we need to understand today's new tool. Is anybody here not familiar with what device resource looks like? Okay, so if you do understand what device resource looks like, raise your hand. Okay, so it's a mix. I'll go really fast through this. First of all, why have a device tree? The point of a device tree is to describe hardware, you cannot auto probe, and by its name you can guess it's going to be a tree, and the nodes of the tree are the actual devices, and a node can contain other devices, a node can also contain properties, and you can think of a property just conceptually as being a static variable with some value, and that then gets fed into the system. Here's a very simple example of what a device tree looks like, and I'm going to use this just to point out some of the different parts in some vocabulary. So first of all, a node, I've been talking about nodes. We see our tree is rooted at slash, just like a Unix file system, and our node slash actually contains one node called SOC. Our SOC node contains two more nodes, our interrupt controller at some address, and a serial device at some address. It's a very straightforward. You can also notice that there's a path here since it's a tree, so our serial device is actually full path is slash SOC slash serial at this address. The other thing we care about is properties, and what values those properties have. Again, each node can contain properties. These are just examples of an ASCII string. Down here there's another property with two ASCII strings. There's some properties with integer values. There's a Boolean property. This existence simply is saying true. So fairly straightforward. So today, a new feature, a new tool, and hopefully life will be better after this. It's not a mainline yet. I've not even sent a patch to the mailing lists. Shame on me, I guess, but I've been actively working on this, trying to make it clean and functional and working out the warts, and I wasn't quite ready to submit it yet. All the patches for this are on the elinux.org wiki, so they are available, and again the slides at the end of the slides that give the pointers to where those are at. So what was I trying to solve with this new tool? Basically, I wanted to be able to look at how properties were used in the kernel versus how they existed in a device tree in the source. And to be a little bit more specific in some examples of that, I wanted to see when is a property being accessed, for example. Which properties were being accessed? Which properties were not being accessed? Is there some difference between what properties are in the device tree and what properties are being accessed by the kernel code? And does the device tree source actually contain the proper properties? So you can look at this from two different directions. You can look at this from the kernel code side, and you can say, did my code in the kernel actually read a property value that's in the device tree? Did it try to read a value that should have been in the device tree, and it failed to read it, got some sort of error back? Or did it not attempt to read a variable that does exist in the device tree? And if we turn it on, let's have a look at it from the other side, look from the device tree source side, we ask essentially the same questions just looking in the opposite direction. Does the device tree have the necessary properties? Does it have the properties that are needed by the driver? Are there properties that should not be there that are there? Just because a property is legal and optional doesn't necessarily mean you want it in your specific device tree description. So that could be an error if you actually included it by mistake. And finally, do you have properties in your device tree that the kernel did not even attempt to access? That might give you an idea that you have a stale property, or maybe someone forgot to implement that in the kernel code, or in the driver, even though it's defined in the binding. So it's just another clue in insight. So being a typical kernel developer, my very first tool has got to be printk, right? So a very simple tool, incredibly simple. And I put those printk's in the APIs for accessing properties, and that leads to a slight side effect in that some code accesses the device tree structures directly instead of through the APIs. So you have to be a little bit cautious about these results. You can't just look at the result of the report and say, oh, that's broken over there. You have to say, oh, that might be broken over there. Let me go investigate a little bit more and see if my suspicion is correct. So the same issue applies both to drivers and to the general frameworks that exist within device tree. So you can use it as a black box, but just be aware that it may bite you occasionally if you do that. And there are times you really, really do want to be looking at the kernel code in association with this. And there will be some slides later in the talk which I think I skip over, which are, again, cautions and warnings. So it's really easy to turn on. Just turn on a config option. And of course being in the kernel, it's never quite that simple. We have a few more steps. Your printK log buffer is probably too small. So you probably have to increase the size of that. You probably have to put debug on your kernel command line to get the messages out.  All of this stuff, for the most part, is really happening at boot time. That's when the interesting messages are coming out, except for overlays, which are another whole other interesting area. So you boot your system and then you can collect the data in one of two ways. You can either capture your boot console, for instance, if you have a serial console, or you can just run the de-message program to print it out later. And here's what it looks like just to scare you. It's kind of cryptic. And my first, there's always something, some gotcha in it, all these things they do. Here's the first gotcha. The kernel takes that device tree blob, which is a binary object, and it expands it out into some big data structure. And while it's doing that, it's accessing properties. So if we're reporting all these properties that are just part of this whole expansion process, that's not useful information. So I had to put in a marker to say, here is where the end of that expansion process is. Ignore all the debug messages before that point if you're looking at the console output. So that's just a nice breakpoint that you have to be aware of. And so once you've gotten past that message, and that's just a magic constant string, anything after that is going to be a useful message. And I'll talk about this format, but basically these are OF underscore find messages. And the format is that first there's a PR FMT, and that's part of the whole debug infrastructure, which puts a prefix on your messages. So in this case, it's OF colon. Each file optionally has a PR format which may differ. And you'll find that in the different files I use that prefix actually differs. So it's not always OF colon, it's sometimes something else. But then the next thing is the OF FND. So that's always going to be there, something to search for. Then there's going to be a status, which I'll talk about on the next slide. Then the full node name, so I mentioned how each node has that path essentially from the root all the way down to the node. So that full path will show up in these messages. And then the name of the property being accessed and how large the property is. So here's, well, I'll do this here. Here are some examples of that for nodes slash CPU at zero. First the register properties being accessed, then the same node, the enable method properties being accessed. Then a different node, CPU at one, instead of zero, again accessing its register property. So it's pretty straightforward looking at the messages. The statuses, these are the same statuses that come back from the internal APIs. So if you know the APIs, these totally make sense. The most important one is success. It was able to access the property. You're most likely to see minus 22 E and valve if it doesn't exist. There's some other errors that come back if the data is malformed. So that just gives you some insight if you're really deep into the core of how the APIs are working and what your driver is doing and why it's getting back a weird result. There are two values that I added which are positive numbers. And those refer to the internal use. Marking when are these messages usable or not? So when we're in that unflatten phase, we don't care about those messages. So I bracket with a begin and an end. Same with the overlays. When we have overlays and applying them, there's going to be a range where those messages are going to be garbage. They're not going to be useful information to us. I actually have not added those two messages in for overlay. So I have to add that in to the overlay code. Pretty straightforward. So how do you actually use these messages? Nice ASCII messages coming out on your console. You should be able to just read them like any old print K, right? No big deal. My first system, really tiny system, 18,000 messages. I'm not going to read 18,000 messages. I'm sorry. I don't know about you guys. So that's easy to fix. I'll just use one node and look at one node for our talk to start with. And it's a really simple node. And I chose a node to be deliberately simple. And you'll find that it still provides a good flavor of what's going on. And the way I find that is I just grep. Yay, Unix tools. And you'll notice the sort on the end. So each of these messages may occur multiple times. I wanted to get rid of all the duplication and just simplify this as much as possible. So the sort dash U says give me all the unique instances of these messages. So I'm down to just four messages for this one device, this coin cell driver. So that's pretty cool. I'm used to having a really small screen. So I didn't want to give you all this small font. So as usually, I tried to do things to blow up my fonts. So I'm just going to strip out that whole path here, just adding a said. So now we have our four debug messages in nice big font that I can show on subsequent examples. The thing I just skipped over was there's something that I left out in this very simple grep. Grep is wonderful, but that whole unflattened device tree phase got captured by this grep. I didn't go to my console file and find that range and delete all those lines, which I could have done, but it's just one more manual step that you'd have to do. So here's those four messages, and I put them on the same slide as the actual note in the device tree. So it looks pretty straightforward. Like I said, a rather simple simple node. And we can look at how those messages compared to the node. So we start with the first access of a of a property, the compatible property status was zero. We were able to access that that property. And we look in our device tree node. And yes, we have a property called compatible. So far so good. We have our property size 21, which is our string size, including our terminator. So far so good. Pretty straightforward. Easy tool to use, right? Another catch. Our next property is name. We successfully accessed it. It has a size that's nine bytes long. But do you see a name property down in the node? It doesn't exist. But you'll notice this nice coincidence here. I have something nine characters long with the terminating byte. Matching the size of the property. That might make you think that's what's going on. And indeed it is. Name is a special property. The device tree compiler knows about name. And if you put name into your device resource, the compiler will just strip it out when it compiles. It'll be gone. It won't be there in your binary blob. On the other hand, when the Linux kernel takes your binary blob and expands it, for every node, it's going to create a property called name. And it's going to take the node name and put that in as the value of name. So it magically gets populated for you. Next property status. Again, we found it. And here we have our status in the device resource. And it has the very important value of disable. Which means this node is not enabled. And that's going to be very important in a second here. And then we have, once again, our device type property, which doesn't appear in our node. And that's an artifact of that unpacking since I didn't filter that out. So just to summarize how to approach all this and what I just learned for this node, there are several properties that are in the DTS and the kernel code that access them. There are several properties in the node that the kernel did not attempt to access. These four properties. And that's where this status is going to come into play. This is going to make sense that these properties were not accessed. If the node was not, not enabled, then the driver probe function didn't get called. So that's why the driver code didn't even try and access these properties. So when you put all that together, those pieces, then the picture should make sense. Then finally, what wasn't in the DTS? And I'll be going through those three categories multiple times in different examples. So it's what's in the DTS and actually got accessed by the kernel. What's in the DTS, the kernel failed to access it. And what did the kernel try and access that's actually not in the DTS? So that wasn't too hard. It all fit on one slide, right? No big deal comparing back visually. But imagine if you had an entire device tree. And my example device tree is over 1,000 lines in this case. So I decided it's time to automate this part. So a new tool, DT underscore prop, and that's going to compare that console log file to the device tree. So very easy. You just give it the target log file and a device tree in one of the many possible formats whether it's source or a binary blob or a file system tree from the target. And here's what the output's going to look like. It looks a lot like a diff. We have the console on one side of the diff. We have our device tree on the other side of the diff. Here we have our node and our properties. And we can see our typical standard minus plus or space for our diff. So it looks a lot like DTX diff.  And hopefully that will make some of this stuff later make more sense. We start creating a device tree source file called DTS target one. And the way we create that is we scan through that console log, look for all those OF find OF FND debug messages and for each of those messages we add a line to our device tree source which provides that source path to the node and the property that we're accessing at that point. And this is what that looks like. It doesn't look like any device tree source you've ever seen I'm sure.  Our next step is to take that and we run it through DTX diff. And I mentioned earlier that nice side effect of DTX diff you give it one file and it's just going to preprocess it and out pops it a standard normal DTS file. In nice canonical format the nodes are nicely populated with all the properties. The nodes are in alphabetic order. The properties are in alphabetic order. So it's going to look like a normal device tree source file something you're used to looking at. Run that same process through the other the device tree source that you're comparing. In my case I was using a real device resource like I said it could be a binary blob. And again we're getting into that canonical format. And then the final step is comparing those two files that are in canonical format. And now I can do an intelligent diff.  If you have a block of of tax and you change two lines in the middle of it sometimes you end up with really weird results where you might get a plus in one place and a minus in another place for the same exact line that didn't change. And I didn't want that to occur. I wanted those pluses and minuses to really reflect that the property was either accessed on the target or not. It was in the device tree source or not. So I didn't want any of these silly artifacts coming out of diff. So I had to create an intelligent diff that knew how to deal with this expected format of sorted device tree. So you can start with just the differences. And I'm so undecided about this whether the default should be just show me the differences only lines that have that plus or minus in the first line or should I show all the properties is the default. Even the ones that are in both places both the console and in the device tree. So if anybody has suggestions on that feel free to pipe up. That's what makes more sense. So we're going to go back to I did this before for the the grep example. And this is much easier. I can say what's in my device tree and what was accessed by the kernel. And of course standard diff my space means it's in both places. So it just jumps out. I just run the tool look for the lines that are in both places. Easy. No thought. No fuss. It's right there. What's in my device tree but it wasn't assets by the kernel. Again I just look for my plus sign. What was in my device tree. My plus line. But not actually on the target system. Just jumped out of it. I need to think about it. And finally what wasn't in the device tree that was accessed by the kernel. And in this example there aren't any of those lines. So crummy example sorry. I pointed out before the importance of that status property. And we saw how the status being disabled told us something really important when we're actually looking at the device resource. One side effect of this whole processing is the values of the properties are expunged. So you don't see any value there for status. You don't know whether it's enabled or disabled. And I thought that was such an important thing that comes up so often in debugging is why doesn't my device exist. It's because it's disabled. So I added a feature to specify I want my disabled nodes tagged. And it will actually check and it'll put a comment up warning you that your node is disabled. So in this case it'll make sense. These four properties aren't being accessed because my driver didn't even probe. And it just jumps right out at you. So that was a really simple example. Let's make it a little bit more complicated. We'll change that status from disabled to okay. So now we're going to actually probe the device. And we should see more properties in our list. And here we go back to our graph example. And every line that's read is now a new message a new property that wasn't there before. So it's bigger. And again I'm going to put that on the same slide as the actual device tree node. And I was getting a little bit harder to compare back and forth visually. But it's still humanly possible. So I can look and see what's in my device tree. And also was accessed in the kernel. So I go through my messages. I find my compatible. I look in my node. Yeah, there's compatible. Name. Oops, that's the special thing. The node name. Q com R set OMS. I look in my device tree. Lo and behold, there it is. So I can manually look at that. It's still not too difficult. It's a little bit painful. But it's humanly possible. And conversely, I can say what's in the device tree. But never was accessed on. On the target by the kernel. So Q com charge enables the only property looking through this long list. That the kernel never tried to access. Again, still humanly possible error prone. It's really easy to probably overlook things. And then that third category, what was what did the kernel try to access that turned out was not actually in the device tree. And again, you have to go through the list and then compare it to the node. And hopefully I got all these right. Again, it's humanly possible. So DT prop is a whole lot easier. If I just run that. It just jumps right out all the minuses, the pluses, the spaces. So again, those three categories, what was accessed, all I have to do is look for those spaces in the first column. So those five properties jump right out. What is there in the device tree that didn't get accessed by the kernel? Just look for that plus sign. Jumps right out. Easy peasy. And finally, what did the kernel try to access that was not in the device tree? Just look for that minus sign. Again, they just jump right out. Really, really easy to scan for that. So what should we expect? We saw a list of what the driver or the kernel was accessing. And if I go and look at the driver, these are the APIs. Again, a really nice, simple driver. This is a great example because of this. It's only trying to access four different properties. And that matches what we've been seeing in these slides. And here are the four properties. Trust me, they actually match. Then there's that one property that's in the device tree and the kernel didn't even try and access it. What's up with that? This was a really cool mistake. I didn't do this on purpose. So this is not a set up example. This really is what popped out when I ran the program on my system. It's a real honest to good bug. I've been carrying a patch to patch my device tree to enable this device. And the device tree definition changed from several releases before to the current release. So it used to be the case where you'd say you have to enable the device. So you'd have a property Q-com charge enable. They decided to flip it on its head and say that if you don't want it enabled, then you have to provide a Q-com charger disable property. So this pointed that bug out really, really obviously. Okay, I talked before about how you shouldn't just use it as a black box. It really helps when you're working conjunction with the code. Now that you've seen some examples, you can see that just looking at those diffs, some things do jump out and you probably can use this kind of as a black box. And that last bug was a real good example. And I ignored a lot of the other properties. So here's another example from an entirely different node where there's something that looks suspicious. We have an interrupt property that was accessed by the kernel, our space up front, and it exists in the device tree. We have another property, our interrupt parent. Our interrupt parent is the interrupt controller that's going to handle that interrupt. And the kernel tried to find an interrupt parent property in this node and it couldn't find it. It doesn't exist in the device tree source. So is this a problem? Is this a bug? Someone in the back says no. If I had prizes, I should have brought prizes. You would win this prize. It turns out that if I look in the device tree source and I just look at a small part of it, we see what matches that DT proper report. It makes a lot of sense. We have our slash SMD slash modem interrupts property and it does exist. So, of course, it got accessed. We don't see any interrupt parent property. So everything's still holding together. It makes sense. And if we go and actually go back to the print K messages in the boot log, actually print K does have its place in time. This is a place where you have an exact issue you're looking at. You can go find that spot in the console boot log. And this is going to actually make a lot of sense. And you can see it tried to access SMD modem interrupts property and it got that, status zero, tried to interrupt the interrupt, tried to access the interrupt parent property, couldn't find it. So the next lines in the log, we see it move one level up the tree. It goes to the parent of SMD modem. It looks in slash SMD, looks for interrupt parent. Again, it doesn't find it. Goes one level up, goes up to the root, looks for interrupt parent again and lo and behold, it finds it. So this is an interesting side effect. If you're trying to understand how the device tree code works, this is a good tool to help you explore just by looking at these messages. You can see what's going on pretty quickly. If you try and read the code, you'll find that it's a bit of spaghetti by the time you nest into it. It can be very hard to follow through. And so of course, the device tree now that we know where our interrupt parent is, we can look earlier in our thousand line device tree file and lo and behold, yet it's there as expected. So everything's good as our prize winner pointed out. That was not a problem.  Okay. There are a lot of different caveats. I've just covered a few of them. The usage message from the script gives some more. So I highly recommend not ignoring that help message. So what did I talk about today? First of all, I talked about updates to last year's talk.  So I recommend looking at last year's talk if you are not familiar with it. Then there's the new tool, which was barely mentioned last year, the DT to config. And then that got fleshed out in my LinuxCon Japan talk. Now a useful tool in both of those in the kernel tree now. And today I talked about my new tool, that wonderful print K, which is incredibly simple, but that simplicity is very powerful in the end. And then DT prop to help analyze the results of that. And you may notice that these tools have been piling on top of each other. So that very first tool, DTX diff, has been a stepping stone, which gets incorporated into DT to config, also gets incorporated into DT prop. And so in the standard Unix tradition, I'm finding that a lot of these tools are working very well together. And hopefully there'll be more coming in the next year. These are just pointers to where to get all those articles. Again, they're in the slides available at the conference website and elinux.org. So thank you. Thank you for coming. Thank you for staying and not going to lunch. And they'll take questions. Question back there. I'm sorry, can you repeat that? Oh, okay. Yeah. Um, I think my DT DT prop help message actually gives some examples of that. There especially a few frameworks that scan through this, this, the structure of the device tree because it's just more efficient and easier for them to process that way. So you won't get any of these OF fine messages when they're accessing the structures directly. Does that make sense? I'm not sure if it will make sense to modify those that code to actually use the APIs, whether it's worth it. If this tool becomes really popular and useful, then maybe it would be worth doing that. Yes. Yes. Why do I strip out all the values? They might be interesting. I was really tempted to put them in. So you will have noticed on those console messages, there were no values. There was the node name, the property name, the size of the property, but not the actual values. And I was just concerned that the volume of the size of those messages was just going to become very, very large if I included those in the debug messages. It's yeah, in theory, you should be able to look in the device tree and see what value should be there, but maybe they're wrong. So yeah, it could be useful. Yeah, maybe a switch. Yeah. Yes. To adopt the which part. So the same sort of messages. Pardon the same sort of not that I know of. I've haven't talked to the bootloader people at all. And this is actually the first that I've really talked to any extent about about the tool. So I haven't even planted the seed in anybody's mind. Yeah, yeah, it would be a great thing to add into you boot also or the other bootloaders. Are there any bootloader people in the room? Actually would like to talk to bootloader people about other stuff. There's question over here. Yeah. No, I didn't consider using trace points. Do you know how early they're available in the boot process? Yeah, that could be a good, good alternative. Yeah. Yeah, one thing that you may have noticed was I used a config option. And I use that config option to enable debug statically for all the files that have these messages. And that was because doing dynamic debug kicked in too late in the boot process. So it's a similar type issue. Yeah, so that that'd be one alternative I could look at. Well, okay. Yeah, trace print K may be a better alternative altogether. More questions. Thanks for coming. Have a great lunch.


As part of the Organic Profile that Scott presented, we also have been looking now to upload an image for organizational units. So you can basically upload a photo of the facility or the district's office. We can link it to that particular organets and then we can display this image as part of the Organic Profile in Maps. So this is really part of this overall NFL or facility registry effort that we have. We basically would like to allow people to capture more rich information about the facility and then present all of this as part of a facility registry effort. So let's have a quick look and see how this works. So we start by going to the maintenance. We go to organizational units. We can pick really whatever organets, but we can pick our favorite one as Scott says.  So very easy to use. And again, this will be then be displayed in the profile later in the maps.